Skip to content

fix: 4 bugs in panel navigation, Google Search Console verification, and dashboard links#58

Draft
Copilot wants to merge 217 commits intomainfrom
copilot/fix-dashboard-active-highlight
Draft

fix: 4 bugs in panel navigation, Google Search Console verification, and dashboard links#58
Copilot wants to merge 217 commits intomainfrom
copilot/fix-dashboard-active-highlight

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Mar 29, 2026

Four bugs identified during a code audit of lib/panel/navigation.ts, next.config.mjs, and app/painel/page.tsx. Fixes cover incorrect sidebar active state, missing SEO verification route, inconsistent link construction, and a misplaced nav item.

Changes

  • lib/panel/navigation.ts — Dashboard matchPrefixes too broad
    matchPrefixes: ['/painel'] matched every sub-route via startsWith, risking incorrect highlight in future logic. Changed to ['/painel/']. Active state is unaffected — isNavigationItemActive already short-circuits on id === 'dashboard' with exact match.

  • lib/panel/navigation.ts — Métricas in wrong nav group
    metricas was in groupId: 'rede' ("Rede"), moved to groupId: 'overview' ("Visão geral") alongside Dashboard and Pedidos.

  • next.config.mjs + app/api/google-verification-2/route.ts — Second GSC token not served
    public/google97080e0a7b8aa4f2.html existed but had no rewrite. Added rewrite and new API route returning the correct verification token:

    // app/api/google-verification-2/route.ts
    export async function GET() {
      return new Response('google-site-verification: google97080e0a7b8aa4f2.html', {
        headers: { 'Content-Type': 'text/html; charset=utf-8' },
      })
    }
  • app/painel/page.tsx — Inconsistent link construction
    Four "Primeiros passos" links used inline \/painel/editor${painelContextParam}`instead ofgetRestaurantScopedHref. Standardized all four to use getRestaurantScopedHref(path, restaurant?.id)and removed the now-unusedpainelContextParam` constant.

Original prompt

Contexto

Durante auditoria do código foram identificados 4 bugs nos arquivos lib/panel/navigation.ts e next.config.mjs. Todos devem ser corrigidos na mesma PR.


Bug 1 — matchPrefixes do Dashboard conflita com todas as sub-rotas do painel (CRÍTICO)

Arquivo: lib/panel/navigation.ts

Problema: O item dashboard possui matchPrefixes: ['/painel']. A função isNavigationItemActive usa pathname.startsWith(prefix), então toda rota dentro de /painel (como /painel/metricas, /painel/pedidos, /painel/produtos, etc.) também marca o Dashboard como ativo na sidebar. Isso causa highlight incorreto na navegação.

Correção: Alterar o matchPrefixes do dashboard para ['/painel'], mas a lógica de isNavigationItemActive já tem um caso especial para id === 'dashboard' que faz match exato (pathname === '/painel' || pathname === '/painel/'). O problema real é que o próprio matchPrefixes está amplo demais e pode causar outros problemas em lógica futura.

Mudar matchPrefixes do dashboard de:

matchPrefixes: ['/painel'],

Para:

matchPrefixes: ['/painel/'],

Isso não quebrará o isNavigationItemActive (que já tem tratamento especial para id === 'dashboard'), mas evita que qualquer código futuro ou teste que use matchPrefixes diretamente faça match incorreto.


Bug 2 — Segundo arquivo de verificação do Google Search Console sem rewrite (CRÍTICO para SEO)

Arquivos: next.config.mjs e public/google97080e0a7b8aa4f2.html

Problema: Existe um segundo arquivo de verificação do Google Search Console em public/google97080e0a7b8aa4f2.html, mas o next.config.mjs só tem rewrite para o primeiro arquivo (google1a0b3e572aae5f34.html). O Next.js não serve arquivos .html da pasta public diretamente para arquivos de verificação em certas configurações — e mesmo que sirvam, o middleware pode interferir. Além disso, há apenas uma rota de API de verificação que retorna o conteúdo do primeiro token, não do segundo.

Correção:

  1. Adicionar um segundo rewrite no next.config.mjs para /google97080e0a7b8aa4f2.html apontando para uma nova rota de API.
  2. Criar a rota app/api/google-verification-2/route.ts com o conteúdo correto do segundo token: google-site-verification: google97080e0a7b8aa4f2.html.

Bug 3 — Navegação usa painelContextParam inline em alguns links do Dashboard mas getRestaurantScopedHref em outros (inconsistência)

Arquivo: app/painel/page.tsx

Problema: No Dashboard (app/painel/page.tsx), os links dos "Primeiros passos do dono" usam painelContextParam montado manualmente com template string:

href={`/painel/editor${painelContextParam}`}
href={`/painel/produtos${painelContextParam}`}
href={`/painel/qrcode${painelContextParam}`}
href={`/painel/pedidos${painelContextParam}`}

Enquanto outros links na mesma página usam getRestaurantScopedHref. Isso é inconsistente e pode gerar URLs duplicadas de ?restaurant= se getRestaurantScopedHref for chamado em cima de uma URL que já tem o parâmetro. Padronizar todos os links para usar getRestaurantScopedHref.

Correção: Substituir os 4 links inline para usar getRestaurantScopedHref(path, restaurant?.id).


Bug 4 — Item "Métricas" agrupado em rede em vez de overview (UX incorreta)

Arquivo: lib/panel/navigation.ts

Problema: O item de Métricas está no grupo rede (seção "Rede" da sidebar), mas conceptualmente pertence à seção de "Visão geral" junto com Dashboard e Pedidos. Usuários não vão procurar Métricas na seção "Rede" — isso é especialmente confuso quando o restaurante não tem rede (unidade única).

Correção: Mover o item metricas do groupId: 'rede' para groupId: 'overview'.


Resumo das mudanças

Arquivo O que muda
lib/panel/navigation.ts Corrigir matchPrefixes do dashboard; mover metricas para grupo overview
next.config.mjs Adicionar rewrite para google97080e0a7b8aa4f2.html
app/api/google-verification-2/route.ts Criar nova rota de verificação para o segundo token do Google
app/painel/page.tsx Padronizar links de navegação para usar getRestaurantScopedHref

The following is the prior conversation context from the user's chat exploration (may be truncated):

User: reuna tudo que for util para upgrade de todos os commites sem quebrar nadda hoje o emergent testou e validou em e2e o software e precisa ver estes commite sorganizar ar upgrade no repo e pushar

Assistant: Aqui está o panorama completo e organizado do repositório TiagoIA-UX/Cardapio-Digital — todos os commits de hoje (29/03/2026) foram feitos pelo Emergent Agent e estão todos já no main. Não há nada pendente para pushar — tudo já foi commitado. Veja o resumo organizado:


📦 Repositório: TiagoIA-UX/Cardapio-Digital

✅ Commits de hoje (29/03/2026) — validados e já no main

| # | SHA | Hora | Autor | O que fez |
|---|-----|---...

This pull request was created from Copilot chat.


⌨️ Start Copilot coding agent tasks without leaving your editor — available in VS Code, Visual Studio, JetBrains IDEs and Eclipse.

- Add templates: restaurante, pizzaria, lanchonete, bar, cafeteria, acai, sushi
- Create shared OrderForm component with customer data, delivery/pickup, address, payment method
- Enhanced landing page showcasing all 7 templates in 'Veja como fica' section
- WhatsApp integration with formatted order messages
- Add SEO: robots.ts, sitemap.ts with dynamic URL generation
- Remove static public files in favor of Next.js App Router
…pio digital SaaS: - Banco de dados PostgreSQL com RLS (Supabase Free) - Autenticacao com Supabase Auth - Painel administrativo (/painel) com dashboard, produtos, pedidos e config - Cardapio dinamico publico (/r/[slug]) - API segura de pedidos com calculo server-side - Login e cadastro de restaurantes - Header com navegacao na landing page
- Add /privacidade page with LGPD-compliant privacy policy

- Add /termos page with terms of service

- Add cookie consent banner component

- Update footer with correct legal links and branding

- Update login page with links to legal pages
- Highlight that customers can edit everything: name, logo, products, prices

- Show add/remove product functionality

- Emphasize simple and intuitive interface
- Add checkout page with PIX (R) and card (6x R.50) options

- Create payment API and webhook for automatic activation

- Block admin panel for unpaid users

- Add payment status fields to Restaurant type

- Create success, error, and pending payment pages
- Fix layout to skip checks on create-restaurant page

- Redirect to checkout if restaurant exists but unpaid
…a /comprar/[template] com escolha de plano (self-service ou feito-pra-voce) - Página /finalizar-compra para processar pagamento após login - API de pagamento atualizada com novos preços (PIX: 247/497, Cartão: 3x99/199) - Landing page com botões 'Quero esse' nos templates - Migration SQL com campo template
Made-with: Cursor
…horias gerais

- API onboarding (status, submit) e página de onboarding
- Validação de cupons e migração cupom primeiros clientes
- Ajustes em pagamento, webhook MercadoPago e status
- Página de preços, cookies, status e editor no painel
- Novas libs: coupon-validation, format-currency, image-validation, pricing
- Migrações: onboarding_submissions, orders_troco_para, templates_seed
- Correções em checkout, pedidos, planos e componentes
- Atualização de testes onboarding-and-templates
TiagoIA-UX and others added 16 commits March 26, 2026 17:10
- Remove unoptimized:true (enable Next.js Image Optimization)
- Add Supabase + R2 remote patterns for images
- Tighten CSP: script-src, style-src, font-src, img-src, connect-src
- Lazy load Footer, FaqSection, SavingsCalculator (dynamic imports)
- Add admin_audit_log table (migration 043)
- Add lib/admin-audit.ts helper for logAdminAction()

Ref: Emergent.sh audit recommendations
…onialsSection + E2E tests

- Mega Menu com categorias Produto/Recursos no header
- Chat widget com quick replies categorizados
- Sidebar colapsável no painel + badges (new/beta)
- Admin layout reorganizado em 3 grupos (Principal/Gestão/Ferramentas)
- AI learning: análise de sentimento + categorização de tópicos
- Network expansion: tier Franquia + helpers formatCurrency/getDiscountTierLabel
- Métricas admin: tempo médio resolução + top razões escalação
- Proteção email administrador no painel de métricas
- TestimonialsSection: carousel 5 depoimentos, autoplay, stats
- E2E landing-conversion: 20 testes (hero, CTAs, proof, testimonials, SEO)
- E2E security-comprehensive: 24 testes (headers, auth, XSS, rate limit)
- Fixed admin/metrics page to handle missing database tables gracefully
  (plans, activation_events, ai_escalations, ai_learning_entries)
- Fixed security-audit.spec.ts open redirect test to work with any baseURL
- Fixed cliente.spec.ts payment tests to accept 429 rate limit responses
- All core e2e tests now pass (100+ tests)
- Updated security-comprehensive.spec.ts to accept 403 (forbidden)
  as a valid response for path traversal attempts alongside 400/404
- All 140+ e2e tests now pass (100% success rate)
…ócio service

MUDANÇAS DE NEUROMARKETING:
- Substituído tom agressivo por abordagem educativa nas boas práticas
- Seção de comparação iFood agora mostra estratégia complementar (não competição)
- Removidas cores vermelhas de 'dor' por cores neutras e positivas
- Badge do hero mudado de 'urgência' para 'educação'

NOVA SEÇÃO - GOOGLE MEU NEGÓCIO:
- Explicação educativa sobre visibilidade em buscas locais gratuitas
- Orientação sobre como aparecer em 'lanche perto de mim' no Google
- Serviço opcional de cadastro profissional por R$350
- CTA para WhatsApp com mensagem personalizada

PROPOSTA DE VALOR ATUALIZADA:
- iFood = pescar clientes novos
- Canal próprio = fidelizar e lucrar 100%
- Google Meu Negócio gratuito = visibilidade local orgânica
- Estratégia inteligente ao invés de 'guerra' contra plataformas
Nova página de métricas do painel:
- Pedidos hoje/semana/mês
- Faturamento por período
- Ticket médio
- Produtos mais vendidos (top 5)
- Gráfico de pedidos dos últimos 7 dias
- Design responsivo com cards e visualizações

A rota já estava registrada em lib/panel/navigation.ts
@vercel
Copy link
Copy Markdown

vercel bot commented Mar 29, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cardapio-digital Error Error Mar 29, 2026 6:12pm

Copilot AI changed the title [WIP] Fix dashboard active highlight in navigation panel fix: 4 bugs in panel navigation, Google Search Console verification, and dashboard links Mar 29, 2026
Copilot AI requested a review from TiagoIA-UX March 29, 2026 18:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants