Repository navigation
Releases: rg3915/HubFlow
Release list
v1.0.1 - Configuração pelo settings.py
Configuração toda pelo settings.py com python-decouple.
Alterado
- Configuração toda pelo
settings.pycom python-decouple: armazenamento S3 via settingsAWS_*lidos direto pelo django-storages (sem montar opções à parte) eCLOUDINARY_URLno settings; CLI lêHUBFLOW_URL,HUBFLOW_TOKENeHUBFLOW_CONFIG_DIRcom python-decouple; README atualizado.
v1.0.0 - Essencial completo
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
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
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 testacha 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 lintformata 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
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
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 (
fieldsna criação/edição,custom_valuesna 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
v0.11.0 - Polimento
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
s3do 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
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
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
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.