Skip to content

Releases: rg3915/HubFlow

v1.0.1 - Configuração pelo settings.py

Choose a tag to compare

@rg3915 rg3915 released this 14 Oct 16:28

Configuração toda pelo settings.py com python-decouple.

Alterado

  • Configuração toda pelo settings.py com python-decouple: armazenamento S3 via settings AWS_* lidos direto pelo django-storages (sem montar opções à parte) e CLOUDINARY_URL no settings; CLI lê HUBFLOW_URL, HUBFLOW_TOKEN e HUBFLOW_CONFIG_DIR com python-decouple; README atualizado.

v1.0.0 - Essencial completo

Choose a tag to compare

@rg3915 rg3915 released this 14 Oct 16:09

Essencial completo: login com Google e GitHub para contas já cadastradas. Com ele, a 1.0.0 reúne tudo o que saiu nas versões 0.x:

Versões Entregáveis
0.1.0 – 0.4.0 Base e login por e-mail, clientes e projetos, quadro kanban, notificações por e-mail, colaboração no card, sprints
0.5.0 – 0.9.0 Controle de tempo, faturamento, dashboard, sincronização GitHub/GitLab, quadro em tempo real
0.10.0 – 0.12.0 Permissões, polimento (busca, sino, S3/Cloudinary), campos personalizados e formulário público
0.13.0 – 0.15.0 Automações e SLA, relatórios em PDF, layout responsivo
1.0.0 Login social

Adicionado

Login social

  • Login com Google e GitHub (OAuth, authorization code): state de uso único, e-mail verificado do provedor, entra só em conta já cadastrada (sem criar conta nova), vincula a conta social e entrega ao frontend um código de uso único trocado por token (POST /api/auth/social/exchange). #166
  • Botões Entrar com Google/GitHub na tela de login (só os provedores configurados, GET /api/auth/social/providers) e página de retorno /login/social com mensagens para conta não cadastrada, e-mail não verificado, login cancelado ou expirado. #167
  • Contas conectadas no perfil: GET /api/auth/social e DELETE /api/auth/social/{provedor}; seção no perfil com desvincular e conectar. #168
  • CHANGELOG 1.0.0; guia do login social no README (apps OAuth no Google Cloud e no GitHub) e regra RN-130. #169

v0.15.0 - Mobile

Choose a tag to compare

@rg3915 rg3915 released this 14 Oct 14:10

Mobile: layout responsivo do quadro, do painel do card, das listas, do dashboard e da navegação (testado em 360 e 390 px).

Adicionado

Mobile

  • Quadro em telas pequenas: uma coluna por vez com encaixe ao rolar, barra do quadro rolável, cards com alvo de toque maior, arraste com espera ajustada para o toque e "Mover para" no painel do card como alternativa ao arraste. #104
  • Painel do card em tela cheia no celular: cabeçalho fixo com "← Quadro", seções recolhíveis (fechadas no celular, menos comentários), área segura do iOS e campos em duas colunas. #105
  • Listas e cabeçalho no celular: tabelas de clientes, projetos, pagamentos, sprints e usuários viram cartões com rótulo (diretiva v-stack + CSS), caminho mostra só a página atual e o menu do usuário só as iniciais. #106
  • Dashboard e navegação no celular: etapas em duas colunas, gaveta lateral que fecha ao navegar ou ao tocar fora, sino e meus cards presos às bordas da tela, área segura do iOS (viewport-fit=cover) e URL do webhook quebrando linha; todas as telas sem rolagem lateral em 360 e 390 px. #107

v0.14.0 - Relatórios e métricas

Choose a tag to compare

@rg3915 rg3915 released this 14 Oct 14:02

Relatórios por período (semana, quinzena, mês ou datas) com PDF, envio por e-mail e envios agendados, na API, na CLI e na tela.

Adicionado

  • Dados do relatório por período (app reports): semana, quinzena ou mês; horas por pessoa e por card, cards criados e concluídos, tempo médio até concluir, SLAs estourados e faturamento, por cliente ou projeto, com consultas agregadas. #157
  • API de relatórios: GET /api/reports com cliente/projeto e period (week, fortnight, month) + date ou start/end; respeita clientes visíveis e só traz faturamento para quem vê pagamentos. #158
  • PDF do relatório (GET /api/reports/pdf) gerado com WeasyPrint a partir de template HTML/CSS no visual do HubFlow; pango e fontes no Dockerfile; task test acha o pango do Homebrew no macOS. #159
  • Envio do relatório por e-mail (POST /api/reports/send) com o PDF anexado, para os e-mails informados ou os do projeto/cliente. #160
  • Relatórios agendados (semanal, quinzenal, mensal) por cliente ou projeto: API /api/report-schedules (cada pessoa gerencia os seus), envio uma vez por período encerrado pelo comando send_reports, que o scheduler roda a cada 15 min. #161
  • CLI: hubflow report show/pdf/send e report schedule list/add/remove (--client/--project, --period + --date ou --start/--end); task lint formata antes de checar. #162
  • Tela de relatórios (menu Relatórios): cliente, projeto, semana/quinzena/mês ou datas; números, horas por pessoa, cards com mais horas, faturamento, baixar PDF e enviar por e-mail; CORS expõe o nome do arquivo baixado. #163
  • Tela de relatórios agendados (Relatórios › Agendar envios): lista com ligar/desligar e cancelar, período já coberto e criação por cliente ou projeto, frequência e e-mails; páginas novas abrem no topo. #164
  • CHANGELOG 0.14.0; README e regras RN-120 e RN-121. #165

v0.13.0 - Automações e SLA

Choose a tag to compare

@rg3915 rg3915 released this 14 Oct 13:40

Automações (gatilho → ação) e SLA por coluna com verificação periódica, avisos de prazo vencido, quadro sem N+1 e schemas da API com ModelSchema.

Adicionado

  • Model de automação por projeto (app automations): gatilho (card criado, entrou na coluna, SLA estourado) → ação (mover, definir responsável, adicionar etiqueta, avisar), com validação e descrição em linguagem simples. #148
  • Motor das automações: roda as regras ligadas ao criar e ao mover card (API, CLI, webhooks), sem laço (ação de automação não dispara outra), registra no histórico e avisa no sino. #149
  • API de automações: listar, criar, editar (inclusive ligar/desligar) e excluir, com a descrição da regra (projects.change_project para alterar). #150
  • SLA por coluna: horas máximas por coluna do projeto (GET/PUT /api/projects/{id}/sla); o card guarda quando entrou na coluna e informa o SLA (prazo e se estourou) no quadro e na API. #151
  • Verificação periódica (comando check_sla e serviço scheduler no compose, a cada 15 min): SLA estourado dispara o gatilho das automações uma vez por card/coluna e entra no histórico; prazo vencido avisa o responsável no sino uma vez por prazo. #152
  • CLI: hubflow automation list/add/toggle/remove (--when created|entered:COLUNA|sla[:COLUNA], --then move:COLUNA|assign:EMAIL|label:NOME|notify) e hubflow project sla. #153
  • Tela de automações do projeto (Quadro › Automações): lista com ligar/desligar e excluir, criação no formato "Quando … → …"; histórico do card mostra automações e SLA estourado. #154
  • SLA no quadro: horas por coluna configuradas na tela de automações, SLA no cabeçalho da coluna e tempo restante (ou "SLA estourado", em vermelho) no card. #155
  • CHANGELOG 0.13.0; README e regras RN-110 a RN-112. #156

Alterado

  • Refactor: schemas de saída da API com ModelSchema (campos vindos do model; *_id, propriedades e calculados continuam declarados) e um só schema resumido de sprint; respostas iguais. #147

Corrigido

  • Quadro sem N+1: horas gastas, cronômetro aberto, contagem de anexos e sprint vêm na mesma consulta dos cards. #151

v0.12.0 - Campos personalizados e formulários

Choose a tag to compare

@rg3915 rg3915 released this 14 Oct 13:17

Campos personalizados por projeto (no card, no quadro, na API e na CLI), formulário público que cria card sem login e anexos no Cloudinary.

Adicionado

Campos personalizados e formulários

  • Model de campo personalizado por projeto: nome (único no projeto), tipo (texto, número, data, seleção, sim/não), opções, obrigatório e ordem. #136
  • API de campos personalizados: listar, criar, editar, excluir e reordenar (projects.change_project para alterar). #137
  • Valores dos campos personalizados no card (fields na criação/edição, custom_values na resposta): validação por tipo, opção da seleção, obrigatórios ao criar e não podem ser esvaziados; mudanças entram no histórico. #138
  • CLI: hubflow project field list/add/remove, card create --field Nome=valor e card fields (mostra/altera). #139
  • Tela de campos do projeto (Quadro › Campos): criar, editar tipo/opções/obrigatório, reordenar e excluir. #140
  • Campos no painel do card (entrada conforme o tipo, obrigatórios marcados, salva só o que mudou), obrigatórios pedidos no "Novo card", até dois valores no card do quadro e mudanças de campos no histórico. #141
  • Formulário público do projeto: link com token (ligar/desligar, gerar outro) que cria card no Backlog sem login, com título, descrição, contato e campos; limite de envios por IP (FORM_SUBMISSIONS_PER_HOUR). #142
  • Tela do formulário público (/form/TOKEN, sem login, com confirmação do card criado) e configuração na tela de campos: ligar, copiar, abrir e gerar outro link. #143
  • CHANGELOG 0.12.0; README e regras RN-100 e RN-101. #144

Polimento

  • Anexos e avatares no Cloudinary (STORAGE_BACKEND=cloudinary e CLOUDINARY_URL) com a lib oficial do Cloudinary. #145

Corrigido

  • CLI: card label/assign/due não apagam mais a estimativa do card. #139
  • Quadro: mudar etiquetas/responsável pelo painel não apaga mais a estimativa do card. #141

v0.11.0 - Polimento

Choose a tag to compare

@rg3915 rg3915 released this 14 Oct 12:55

Polimento: notificações no app (sino), meus cards, anexos no S3, atalhos com taskipy e uuid7 em todos os models.

Adicionado

  • Notificações no app: menção, comentário em card seu ou de que é responsável e card seu movido por outra pessoa (sem duplicar, sem avisar quem fez); GET /api/notifications (não lidas primeiro + total), POST /api/notifications/{id}/read e /read-all. #114
  • API meus cards: GET /api/me/cards com os cards em aberto sob sua responsabilidade (projeto, cliente, coluna, prazo), vencidos primeiro. #116
  • Cabeçalho com sino (contador de não lidas, lista, marcar todas; abrir a notificação marca como lida e abre o card) e meus cards (contador e lista com prazo/vencidos), atualizados a cada minuto e a cada troca de página. #115
  • Anexos e avatares no S3 (AWS ou compatível) via django-storages com STORAGE_BACKEND=s3; S3 local (SeaweedFS) no perfil s3 do compose com o bucket criado automaticamente; frontend aceita URL absoluta dos arquivos. #113
  • Atalhos de desenvolvimento com taskipy (backend: test, lint, makemigrations, migrate, sync; CLI: test, lint). #135

Alterado

  • Refactor: UuidModel (uuid7, campo uuid único além do id) em todos os models e só TimeStampedModel (created/modified) no lugar de CreatedModel; User.date_joined vira created; a API expõe o uuid. #134

v0.10.0 - Permissões

Choose a tag to compare

@rg3915 rg3915 released this 14 Oct 07:17

Permissões: papéis padrão, permissões por pessoa, escopo por cliente, uso da CLI, visibilidade de pagamentos, convite por e-mail, histórico e tela de gestão de usuários. Também busca global e backup .sql.

Adicionado

Permissões

  • Permissões: permissões padrão do Django (view/add/change/delete) + use_cli e view_own_payments, papéis padrão (Administrador, Gerente, Desenvolvedor, Financeiro, Cliente, Leitura) e vínculo usuário↔cliente. #118
  • API de usuários, papéis e permissões (só quem gerencia usuários): listar, papéis, permissões por pessoa, clientes, ativar/desativar; /api/auth/me devolve papéis e permissões efetivas. #119
  • Permissões em clientes e projetos: sem clients.view_client só vê os clientes de que é membro; criar/editar/excluir exige as permissões padrão (403 com a permissão nomeada). #120
  • Permissões em cards e comentários: add_card para criar; sem change_card/delete_card só edita, move, exclui e arquiva os próprios (criado por ou responsável); delete_comment para apagar comentários de outros. #121
  • Permissões em sprints, milestones, etiquetas e anexos: add/change/delete de sprint, milestone e etiqueta exigem as permissões padrão; sprint/etiqueta de cliente de fora dá 404; anexar e excluir anexo seguem a regra do card (quem enviou ou quem pode editar o card). #122
  • Permissão de uso da CLI: a CLI se identifica com X-HubFlow-Client: cli; o login pela CLI exige permissions.use_cli (403 com o motivo) e marca o token (is_cli), que deixa de valer se a permissão for retirada. #123
  • Permissões de pagamentos: billing.view_payment vê todos, view_own_payments só os dos clientes de que é membro (lista, detalhe, resumo e faturamento do dashboard), sem nenhuma 403; criar, editar/pagar/copiar e excluir exigem add/change/delete_payment. #124
  • Convite por e-mail: POST /api/users/invite (accounts.add_user) cria a pessoa sem senha, com papéis e clientes, e envia o link para definir a senha (mesmo fluxo da redefinição). #125
  • Registro de alterações de permissões: convite, papéis, permissões por pessoa, clientes vinculados e situação guardam quem fez, quando, o antes e o depois; GET /api/users/changes (filtro ?user=) e admin. #126
  • Frontend respeita as permissões de /api/auth/me: menu, rotas, botões de criar/editar/excluir (clientes, projetos, cards, sprints, etiquetas, pagamentos), arrastar só os cards que a pessoa pode mover, painel do card só leitura para quem não pode editar. #127
  • Tela de usuários e permissões (/settings/users): lista com papéis, clientes e situação; painel com papéis, clientes vinculados, CLI sim/não, pagamentos (todos / só os seus / nenhum), permissões por pessoa (travadas as que vêm do papel), ativar/desativar, histórico e convite por e-mail. #128
  • CLI: hubflow user list, invite, role e grant (--revoke). #129
  • CHANGELOG 0.10.0 e documentação de papéis e permissões (README e regras RN-90 a RN-97). #130

Polimento

  • Backup .sql do banco (comando backup_db, POST/GET /api/backups para superusuários, hubflow backup). #103
  • API de busca global: GET /api/search?q= em cards, projetos, clientes, usuários e etiquetas. #110
  • CLI: hubflow search. #112
  • Busca global na barra superior (Ctrl+K ou /), resultados agrupados com navegação por teclado; abre o card pela busca. #111

Alterado

  • Regra RN-80 atualizada: pagamento por projeto, sprint opcional (#131).

HubFlow 0.9.0

Choose a tag to compare

@rg3915 rg3915 released this 14 Oct 06:15

Quadro em tempo real (SSE + Redis), presença no quadro, avatar no perfil e card com trecho da descrição. Veja o CHANGELOG.md.

HubFlow 0.8.0

Choose a tag to compare

@rg3915 rg3915 released this 14 Oct 05:47

Sincronização com GitHub e GitLab: token por projeto, issues criadas e atualizadas a partir dos cards, importação, milestones pareados com sprints e webhooks. Veja o CHANGELOG.md.