- Phone: (906) 482-6616 → (321) 730-8020 direct, (888) 656-2850 toll-free
- Add toll-free number to Footer and Contact page
- Add LinkedIn link to footer
- Add 8x8 trademark disclaimer to footer legal section
- Fix JSON-LD phone numbers in Home.jsx
- Add support phone to Support page
- Strip all Houghton, MI and Upper Peninsula location references
from meta tags, JSON-LD, and fallback descriptions
(not present on original site, unverified)
- Change JSON-LD areaServed from Houghton/UP to United States
- Update Support.jsx Zoho Desk link placeholder
- Added react-helmet-async + HelmetProvider to main.jsx
- Per-page Helmet components on all 8 pages (title, description, OG tags)
- JSON-LD structured data (Organization, LocalBusiness, Service)
- Created public/sitemap.xml with all 17 routes
- Created public/robots.txt
- Fixed heading hierarchy (no h1->h3 skips)
- Improved image alt text throughout
- Fixed docs/zoho-setup.md env defaults clarification
- Fix critical bug: token refresh now uses ZOHO_ACCOUNTS_DOMAIN
(accounts.zoho.com) instead of API domain (www.zohoapis.com).
The OAuth token endpoint lives on a different domain.
- Remove unnecessary redirect_uri from refresh token request
- Add ZOHO_ACCOUNTS_DOMAIN env var (separate from API domain)
- Split contact name into First_Name/Last_Name for Zoho schema
- Replace Service_Interest (non-standard field) with Description
+ Lead_Source: Website (standard picklist value)
- Switch from Insert to Upsert API with duplicate_check_fields:
[Email] so duplicate submissions update instead of error
- Add trigger: ['workflow'] for explicit workflow control
- Add token refresh retry (1 retry on transient failure)
- Add ZOHO_CASES_ENABLED env var for future Cases forwarding
- Update .env.example with full Zoho config documentation
- Update FUTURE.md with detailed Phase 7 Zoho integration plan
- Remove obsolete ZOHO_REDIRECT_URI from Dockerfile
- Replace all undefined shadcn/ui Tailwind classes with correct config values
(text-muted-foreground→text-muted, text-card-foreground→text-text,
bg-secondary→bg-section-alt, ring-ring→ring-primary-navy, etc.)
- Replace text-cyan/bg-cyan with text-primary-cyan/bg-primary-cyan
- Convert all internal <a href> to React Router <Link to> for SPA navigation
- Remove self-referencing /contact button on Contact page
- Add tel: links for phone numbers, mailto: links for emails in
Contact.jsx and Support.jsx hero badges and info sections
- Fix Header.jsx mobile menu button hover:text-cyan→hover:text-primary-cyan (batch 0.6.3)
- Footer: email, phone, Request Consultation CTA
- Home: CTA links added to Trust Signals, Services, Why Queue North
- Contact: hero CTA, prominent phone/email
- Support page updates
- Version bumped to 0.5.3
- FUTURE.md and HISTORY.md now tracked in git
- .gitignore updated to allow FUTURE.md and HISTORY.md
- Section title: Our Services → What We Handle
- Subtitle: outcome-focused language
- Added homeDesc field to all 7 services in data/services.js
- Service cards now show icon + homeDesc + shortDesc
- lucide-react icons per service (MessageCircle, Users, etc)
- B2B professional card layout with icon containers
- Service detail pages unchanged
- #4: Replace su-exec with USER nodejs in Dockerfile (P0)
- #6: Add UNIQUE constraint on leads.email with migration (P1)
- #10: Consistent NULL handling for optional fields (P1)
- Hero section rewrite: B2B value proposition, prominent 8x8 badge
- Clean up .bak file left by agent