Add calendar time tracking and tighten app routing - #10
Conversation
- Gate server AI routes on the Gemini API key - Hide the AI nav item unless AI is enabled - Switch OAuth icons to react-icons
- Use `process.env.VITE_AI_ENABLED` when wiring web bindings - Preserve the existing false default when the flag is unset
Greptile SummaryThis PR gates the AI feature behind a The one thing worth addressing before merge is the swap of inline brand-icon SVGs for Confidence Score: 5/5Safe to merge; the only finding is a P2 style/rule violation on the icon library choice. All remaining findings are P2 — the react-icons import violates the design-system guideline but does not affect correctness, data integrity, or runtime behaviour. Per confidence guidance, P2-only PRs default to 5/5. apps/web/src/features/auth/components/oauth-buttons.tsx and apps/web/package.json — the react-icons dependency should be reconsidered. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Deploy / alchemy.run.ts] -->|GOOGLE_GENERATIVE_AI_API_KEY set?| B{Key present?}
B -->|Yes| C[Bind key to Hono server\nVITE_AI_ENABLED = 'true']
B -->|No| D[Omit key binding\nVITE_AI_ENABLED = 'false']
C --> E[restRouter mounts\n/ai routes via aiRouter]
D --> F[restRouter returns 404\nfor /ai and /ai/*]
C --> G[Web client:\nenv.VITE_AI_ENABLED = true\n→ AI Chat nav item shown]
D --> H[Web client:\nenv.VITE_AI_ENABLED = false\n→ AI Chat nav item hidden]
Reviews (1): Last reviewed commit: "Read AI flag from process env in web bin..." | Re-trigger Greptile |
| </svg> | ||
| ); | ||
| } | ||
| import { FaGoogle, FaGithub } from "react-icons/fa"; |
There was a problem hiding this comment.
react-icons violates the project's icon library rule
AGENTS.md states "Icon library: Lucide React exclusively — never mix." Importing react-icons/fa for two icons adds a ~500-icon dependency that contradicts this rule. Two specific side effects also land with this change: (1) FaGoogle is monochrome, whereas the removed inline SVG rendered the authentic multi-colour Google brand mark; (2) neither FaGoogle nor FaGithub carry an explicit size class, so they fall back to 1em instead of the previous size-4 (16 px).
The prior inline-SVG implementation was the correct compliant approach for brand icons that Lucide doesn't ship. Consider restoring it, or explicitly requesting a design-system exception before merging.
Context Used: AGENTS.md (source)
Summary
/appand updated redirects, navigation, and route generation accordingly.Testing