Releases: luccas-silveira/knobler
Releases · luccas-silveira/knobler
Release list
Knobler v0.8.0
Changed
- Ajustes redesenhados no estilo do Ajustes do Sistema: a janela deixou o
TabView400×580 e virouNavigationSplitView(800×520, redimensionável)
com sidebar de 8 painéis e ícones coloridos — Geral, Notch, Ditado, Pomodoro,
Lembretes, Descanso, Notificações externas e Mensagens. A antiga aba "Geral"
(parede de 20+ controles) foi dividida em quatro painéis; todo toggle agora é
switch com descrição do que faz; sub-opções dependentes ficam desabilitadas
em vez de escondidas. O menu do Pomodoro abre os Ajustes direto no painel
Pomodoro. (SettingsView.swiftnovo;AppSettings.swift,KnoblerApp.swift.) - Notificações externas: aba refeita como Form agrupado; ações de cada
perfil (mapear, rotacionar, apagar) num menu "…" e copiar link virou ícone.
Ícone de perfil que era URL de imagem não quebra mais o layout da lista.
ProfilesListView.swiftfoi fundido emWebhookSettingsView.swift. - Lembretes/Descanso: linhas com menu de contexto (Editar/Apagar), switch
compacto e botão rotulado "Novo lembrete"/"Novo bloqueio" no rodapé. - Mensagens: botão "Remover" foto de perfil (novo
AppSettings.removeMyAvatar()); avatar maior no painel.
Added
- Flag de desenvolvimento
--ajustes[=painel]abre a janela de Ajustes direto
(usada pelos screenshots de UI).
Fixed
- Perfis de webhook: falha de rede não "esvazia" mais a lista carregada
(listProfilesagora distingue erro de zero perfis), reload automático ao
reconectar, respostas atrasadas de reloads antigos são descartadas e criar
perfil com o relay fora do ar não come mais o nome digitado. - Remover a foto de perfil agora propaga: peer que responde o perfil sem foto
tem o avatar limpo do cache dos outros Macs (MessageStore.removeAvatar).
Knobler v0.7.0
Added
- Anexo por link nas Mensagens LAN: botão 🔗 no composer transforma o campo
de mensagem em campo de URL; o app baixa a imagem/GIF (https, link direto,
timeout 15 s), valida pelos bytes mágicos e anexa pelo pipeline existente —
o fio não muda e o destinatário nunca toca a URL.
(MessagesView.swift,MessageMedia.swift.)
Knobler v0.6.0
Changed
- Now playing universal: o card de música agora mostra e controla qualquer
fonte de mídia do macOS (YouTube no navegador, podcasts, IINA…), não só
Spotify/Apple Music. Motor novo: mediaremote-adapter v0.7.6 vendorado
(framework carregado via/usr/bin/perl, contornando o bloqueio do
MediaRemote no 15.4+; verVendor/PROVENANCE.md). O AppleScript saiu; se um
update da Apple quebrar o adapter, o card fica vazio sem derrubar o app.
Shuffle aparece apagado quando a fonte não reporta (navegador); barra de
progresso lida com duração desconhecida (live). A capa agora chega em base64
pelo próprio stream (sem download da URL do Spotify).
(MediaRemoteSource.swift,MediaController.swiftreescrito por dentro.)
Removed
NSAppleEventsUsageDescriptiondo Info.plist — nada mais usa AppleScript.
Knobler v0.5.0
Changed
- Card de música enxugado: a barra de abas "Música | Mensagens" saiu. A troca
de tela agora é por swipe horizontal de dois dedos sobre o card aberto, com um
par de pontinhos discretos no rodapé como indicador (também clicáveis). Com o
notch fechado, o mesmo gesto continua pulando faixa. - A bateria dos AirPods saiu do card expandido: aparece só no card transitório de
conexão e quando algum componente cai a ≤10%. - O botão do espelho saiu de junto do título e assumiu o 5º slot dos controles,
no lugar do atalho pros Ajustes de Som.
Removed
- Barras de áudio do card expandido (o notch fechado já as mostra) e o botão que
abria os Ajustes de Som.
Knobler v0.4.0
Added
- Foto e GIF nas Mensagens LAN: botão de anexo no compositor manda uma imagem
(JPEG/PNG/GIF) pro outro Mac; ela aparece no card que desce do notch e no balão
da conversa, com GIF animando. Imagem grande é reamostrada pra 1600 px/JPEG antes
de ir; GIF vai cru pra não perder a animação (teto de 6 MB). O recebedor valida
os bytes mágicos contra o tipo declarado e grava emmedia/com nome gerado
localmente. (MessageMedia.swift,MediaKindemWire.swift.) - GIF acima do teto é reamostrado mantendo a animação (reduz o lado maior e,
se preciso, pula quadros somando o tempo do quadro pulado) — um GIF de 46 MB
do Giphy vira 5,7 MB e continua girando.
Fixed
- Card de mensagem não sumia mais da tela: com resposta permitida ele ficava
para sempre. Agora some em 20 s (6 s sem resposta), com o relógio pausado
enquanto o ponteiro está sobre o card. - Fechar o card fechava só num monitor: o X (e abrir a conversa) agora vale
para todas as telas, como a resposta rápida já fazia. - Pacote acima de 64 KB era descartado calado:
NWConnectionnão entrega
mais que isso porreceive, e pedir o corpo inteiro de uma vez fazia a leitura
falhar sem erro — nenhuma imagem passaria. O corpo agora é lido em pedaços, e o
tempo-limite da troca subiu de 5 s para 20 s (anexo de MBs em Wi-Fi ruim).
Knobler v0.3.0
Added
- Mensagens LAN: descubra outros Macs com Knobler na mesma rede e mande recados
que aparecem no notch da pessoa, com nome e foto. Aba Mensagens no notch aberto,
recado com ou sem resposta, histórico das últimas 20 conversas por pessoa.
Identidade (nome/foto) configurável, pré-preenchida com a da conta do macOS. - Webhooks configuráveis (mapeamento por perfil): cada fonte externa (GitHub,
Stripe, n8n…) vira um perfil com link próprio; manda um webhook de teste e um
editor lado-a-lado mapeia os campos da notificação a partir do payload capturado
(texto livre +{{ variáveis }}do payload, aninhado). Ícone fixo por perfil
(URL ou emoji). O relay guarda o template e aplica; o app tem a lista de perfis +
o editor com árvore do payload clique-pra-inserir e preview ao vivo.
(template.js/profilesno relay;MappingEditorView/ProfilesListViewno app.) - Notificações externas via webhook: cada dispositivo tem um link próprio
(https://push.appzoi.com.br/w/<token>) que recebe título, descrição, avatar
e ação de clique, exibidos como card no notch. Relay próprio na VPS (Node/pm2
atrás do nginx, TLS) + WebSocket que o Mac mantém aberto (reconecta sozinho,
fila offline). Opt-in em Ajustes › Notificações externas (link + copiar +
rotacionar + toggle de imagens remotas). Avatar remoto com guardas
(só https, content-type de imagem, teto de tamanho, bloqueio de IP privado);
clique abre só http/https. (WebhookClient.swift,RemoteAvatarLoader.swift,
WebhookKeychainStore.swift,WebhookSettingsView.swift,relay/.) - AirPods no notch: ao conectar, card transitório (~4s) com nome + bateria
L / R / estojo; enquanto conectado, bateria no hover (faixinha junto da música,
card dedicado quando não há música). Aviso de bateria baixa (≤10%) e toggle
opt-out "AirPods no notch". (AirPodsBattery.swift,BluetoothMonitor.swiftvia
IOBluetoothevent-driven +system_profileroff-main.) NSBluetoothAlwaysUsageDescriptionno Info.plist (TCC exigia para o
system_profiler/IOBluetooth).