From bb68261c0942ba2aee2d701afd7cef80a0bc346c Mon Sep 17 00:00:00 2001 From: Devasy Patel <110348311+Devasy23@users.noreply.github.com> Date: Thu, 1 Jan 2026 20:39:37 +0530 Subject: [PATCH 1/3] feat: add initial documentation and tracking system for Jules agent --- .Jules/changelog.md | 68 +++++++++ .Jules/knowledge.md | 341 ++++++++++++++++++++++++++++++++++++++++++++ .Jules/todo.md | 163 +++++++++++++++++++++ 3 files changed, 572 insertions(+) create mode 100644 .Jules/changelog.md create mode 100644 .Jules/knowledge.md create mode 100644 .Jules/todo.md diff --git a/.Jules/changelog.md b/.Jules/changelog.md new file mode 100644 index 0000000..37dd93e --- /dev/null +++ b/.Jules/changelog.md @@ -0,0 +1,68 @@ +# Splitwiser UI/UX Changelog + +> All UI/UX changes made by Jules automated enhancement agent. + +--- + +## [Unreleased] + +### Planned +- See `todo.md` for queued tasks + +--- + +## [2026-01-01] - Initial Setup + +### Added +- Created Jules agent documentation and tracking system +- `.jules/JULES_PROMPT.md` - Main agent instructions +- `.jules/todo.md` - Task queue with prioritized improvements +- `.jules/knowledge.md` - Codebase knowledge base +- `.jules/changelog.md` - This changelog + +### Analysis Completed +- Full audit of `web/` application structure +- Full audit of `mobile/` application structure +- Identified accessibility gaps +- Identified UX improvement opportunities +- Documented theming system patterns +- Documented component APIs + +**Files Created:** +- `.jules/JULES_PROMPT.md` +- `.jules/todo.md` +- `.jules/knowledge.md` +- `.jules/changelog.md` + +--- + + diff --git a/.Jules/knowledge.md b/.Jules/knowledge.md new file mode 100644 index 0000000..f6e4b5d --- /dev/null +++ b/.Jules/knowledge.md @@ -0,0 +1,341 @@ +# Jules Knowledge Base + +> Learnings, patterns, and solutions discovered while working on Splitwiser UI/UX. + +--- + +## Project Architecture + +### Web Application Structure +**Date:** 2026-01-01 +**Context:** Initial codebase analysis + +The web app follows a clean architecture: +``` +web/ +├── App.tsx # Main router with protected routes +├── components/ +│ ├── layout/ # Layout, Sidebar, ThemeWrapper +│ └── ui/ # Reusable: Button, Card, Input, Modal, Skeleton +├── contexts/ # AuthContext, ThemeContext +├── pages/ # Route pages +├── services/ # API calls +├── constants.ts # Theme constants (GLASSMORPHISM, NEOBRUTALISM) +└── types.ts # TypeScript interfaces +``` + +### Mobile Application Structure +**Date:** 2026-01-01 +**Context:** Initial codebase analysis + +The mobile app uses Expo with React Navigation: +``` +mobile/ +├── App.js # Entry point with providers +├── screens/ # All screen components +├── navigation/ # Stack and Tab navigators +├── context/ # AuthContext +├── api/ # API client and service functions +└── utils/ # Helpers (currency, balance calculations) +``` + +--- + +## Theming System + +### Web Dual-Theme Pattern +**Date:** 2026-01-01 +**Context:** Understanding theme switching mechanism + +The web app supports two themes controlled by `ThemeContext`: +- **GLASSMORPHISM**: Modern, translucent look with blurs and gradients +- **NEOBRUTALISM**: Bold, sharp design with hard shadows and borders + +**How to implement:** +```tsx +const { style, mode } = useTheme(); +const isNeo = style === THEMES.NEOBRUTALISM; + +// Apply conditional classes +className={isNeo + ? 'border-2 border-black rounded-none shadow-[4px_4px_0px_0px_rgba(0,0,0,1)]' + : 'rounded-xl backdrop-blur-md border-white/20' +} +``` + +**Important:** Always support BOTH themes when modifying UI components. + +### Color Tokens +**Date:** 2026-01-01 +**Context:** Custom colors in tailwind.config.js + +```javascript +colors: { + neo: { + main: '#8855ff', // Primary purple + second: '#ff9900', // Secondary orange + accent: '#00cc88', // Accent green + bg: '#f0f0f0', // Background light + dark: '#1a1a1a' // Background dark + } +} +``` + +--- + +## Component Patterns + +### Button Component Variants +**Date:** 2026-01-01 +**Context:** Understanding Button.tsx API + +```tsx + +``` + +### Card Component with Title/Action +**Date:** 2026-01-01 +**Context:** Card.tsx supports optional header + +```tsx +Action} + className="additional" +> + {children} + +``` + +### Modal Component Pattern +**Date:** 2026-01-01 +**Context:** Modal.tsx structure + +```tsx +Cancel and Submit buttons} +> + {content} + +``` + +--- + +## Mobile Patterns + +### React Native Paper Components +**Date:** 2026-01-01 +**Context:** Primary UI library for mobile + +Commonly used components: +- `` with `` and `` +- `` and `` +- ` +``` + +**2. Apply fix:** +```tsx +// Fixed + +``` + +**3. Update tracking files:** + +`todo.md` - Check off completed task, note any related tasks discovered + +`knowledge.md` - Document if any challenges encountered + +`changelog.md` - Log the change with date + +--- + +## Validation Checklist + +Before committing any change, verify: +- [ ] No TypeScript/ESLint errors in web +- [ ] No React Native errors in mobile +- [ ] Visual appearance unchanged (or improved) +- [ ] Both themes work correctly (web) +- [ ] Dark mode works correctly +- [ ] No console errors or warnings +- [ ] Tracking files updated +- [ ] **Change is meaningful** - Users will notice and appreciate it +- [ ] **Correct tooling used** - Verified package manager from package.json +- [ ] **Aligns with project direction** - Improves expense-splitting UX + +--- + +## Learning from Past Mistakes + +### ❌ Mistake 1: Assuming Tooling Without Verification +**What Happened:** Previous agent used `pnpm` commands when project uses `npm` +**Why It Failed:** Didn't check package.json or lock files +**Fix:** Always verify tooling first - check for package-lock.json (npm), yarn.lock (yarn), pnpm-lock.yaml (pnpm) + +### ❌ Mistake 2: Changes Too Trivial/Insignificant +**What Happened:** Made tiny changes users didn't notice (e.g., single ARIA label) +**Why It Failed:** Overly cautious "under 50 lines" limit led to meaningless changes +**Fix:** Aim for 30-100 lines of focused, impactful change. Each commit should be noticeable. + +### ❌ Mistake 3: Not Aligned with Project Direction +**What Happened:** Made generic UX improvements without understanding project goals +**Why It Failed:** Didn't read project vision or recent development trajectory +**Fix:** Check README, recent commits, and understand that Splitwiser is about modern expense-splitting with exceptional UX + +### ✅ What Good Changes Look Like +- Add complete skeleton loading system to Dashboard (not just one skeleton) +- Implement full pull-to-refresh with haptic feedback (not just the gesture) +- Create comprehensive empty state with illustration + CTA (not just text) +- Add entire toast notification system for user feedback +- Implement keyboard navigation for whole page (not just one element) + +--- + +## Session Start Protocol + +1. **Verify tooling** - Check package.json and lock files to confirm npm/yarn/pnpm +2. **Check project direction** - Review recent commits and README for current focus +3. Pull latest code from main branch +4. Read `.jules/knowledge.md` for context and past mistakes +5. Read `.jules/todo.md` for queued tasks +6. **Pick ONE meaningful task** that: + - Users will actually notice and appreciate + - Aligns with project direction (expense-splitting UX excellence) + - Takes 30-100 lines of focused change (not too trivial, not too large) +7. Make the change and verify it works +8. Update all three tracking files +9. Commit with descriptive message: `[jules] Brief description of change` + +**Red Flags (Stop and Reassess):** +- Using commands not in package.json +- Change feels too trivial (just renaming, adding one ARIA label) +- Change doesn't relate to expense-splitting experience +- Unclear if change improves user experience + +--- + +## Commit Message Format + +``` +[jules] : + + = fix | enhance | a11y | style | perf +``` + +Examples: +- `[jules] a11y: Add aria-labels to Sidebar icon buttons` +- `[jules] enhance: Add skeleton loader to Groups page` +- `[jules] fix: Correct Input focus ring in dark mode` +- `[jules] style: Improve Card hover animation timing` From a1b8b94abb15f597250603cdb70df5bc7fc6bf99 Mon Sep 17 00:00:00 2001 From: Devasy Patel <110348311+Devasy23@users.noreply.github.com> Date: Thu, 1 Jan 2026 21:33:50 +0530 Subject: [PATCH 3/3] fix: correct directory casing in documentation references --- .Jules/JULES_PROMPT.md | 6 ++--- .Jules/changelog.md | 8 +++--- .Jules/knowledge.md | 58 ++++++++++++++++++++++++++++++++++-------- 3 files changed, 54 insertions(+), 18 deletions(-) diff --git a/.Jules/JULES_PROMPT.md b/.Jules/JULES_PROMPT.md index 36ce82b..0cf7a95 100644 --- a/.Jules/JULES_PROMPT.md +++ b/.Jules/JULES_PROMPT.md @@ -49,7 +49,7 @@ You are an autonomous UI/UX enhancement agent for the Splitwiser expense-splitti - Review open issues/PRs to see what's being prioritized - Splitwiser goal: Modern, user-friendly expense splitting with dual-theme support -3. **Read the tracking files** in `.jules/`: +3. **Read the tracking files** in `.Jules/`: - `knowledge.md` - Understand past learnings and avoid repeating mistakes - `todo.md` - Check for queued tasks to pick up - `changelog.md` - Review recent changes for context @@ -302,8 +302,8 @@ Before committing any change, verify: 1. **Verify tooling** - Check package.json and lock files to confirm npm/yarn/pnpm 2. **Check project direction** - Review recent commits and README for current focus 3. Pull latest code from main branch -4. Read `.jules/knowledge.md` for context and past mistakes -5. Read `.jules/todo.md` for queued tasks +4. Read `.Jules/knowledge.md` for context and past mistakes +5. Read `.Jules/todo.md` for queued tasks 6. **Pick ONE meaningful task** that: - Users will actually notice and appreciate - Aligns with project direction (expense-splitting UX excellence) diff --git a/.Jules/changelog.md b/.Jules/changelog.md index 37dd93e..bba97ba 100644 --- a/.Jules/changelog.md +++ b/.Jules/changelog.md @@ -15,10 +15,10 @@ ### Added - Created Jules agent documentation and tracking system -- `.jules/JULES_PROMPT.md` - Main agent instructions -- `.jules/todo.md` - Task queue with prioritized improvements -- `.jules/knowledge.md` - Codebase knowledge base -- `.jules/changelog.md` - This changelog +- `.Jules/JULES_PROMPT.md` - Main agent instructions +- `.Jules/todo.md` - Task queue with prioritized improvements +- `.Jules/knowledge.md` - Codebase knowledge base +- `.Jules/changelog.md` - This changelog ### Analysis Completed - Full audit of `web/` application structure diff --git a/.Jules/knowledge.md b/.Jules/knowledge.md index f6e4b5d..d69b2bf 100644 --- a/.Jules/knowledge.md +++ b/.Jules/knowledge.md @@ -29,6 +29,7 @@ web/ **Context:** Initial codebase analysis The mobile app uses Expo with React Navigation: + ``` mobile/ ├── App.js # Entry point with providers @@ -37,7 +38,6 @@ mobile/ ├── context/ # AuthContext ├── api/ # API client and service functions └── utils/ # Helpers (currency, balance calculations) -``` --- @@ -45,7 +45,7 @@ mobile/ ### Web Dual-Theme Pattern **Date:** 2026-01-01 -**Context:** Understanding theme switching mechanism +**Context:** Understanding theme-switching mechanism The web app supports two themes controlled by `ThemeContext`: - **GLASSMORPHISM**: Modern, translucent look with blurs and gradients @@ -66,14 +66,15 @@ className={isNeo **Important:** Always support BOTH themes when modifying UI components. ### Color Tokens + **Date:** 2026-01-01 **Context:** Custom colors in tailwind.config.js -```javascript +```js colors: { neo: { main: '#8855ff', // Primary purple - second: '#ff9900', // Secondary orange + second: '#ff9900', // Secondary orange accent: '#00cc88', // Accent green bg: '#f0f0f0', // Background light dark: '#1a1a1a' // Background dark @@ -86,6 +87,7 @@ colors: { ## Component Patterns ### Button Component Variants + **Date:** 2026-01-01 **Context:** Understanding Button.tsx API @@ -102,6 +104,7 @@ colors: { ``` ### Card Component with Title/Action + **Date:** 2026-01-01 **Context:** Card.tsx supports optional header @@ -116,6 +119,7 @@ colors: { ``` ### Modal Component Pattern + **Date:** 2026-01-01 **Context:** Modal.tsx structure @@ -135,6 +139,7 @@ colors: { ## Mobile Patterns ### React Native Paper Components + **Date:** 2026-01-01 **Context:** Primary UI library for mobile @@ -148,6 +153,7 @@ Commonly used components: - `` for loading states ### Safe Area Pattern + **Date:** 2026-01-01 **Context:** Screens use View without SafeAreaView @@ -158,6 +164,7 @@ Most screens use `` - consider wrapping in `SafeAreaVi ## API Response Patterns ### Groups API + **Date:** 2026-01-01 **Context:** Group data structure from backend @@ -174,6 +181,7 @@ interface Group { ``` ### Balance Summary API + **Date:** 2026-01-01 **Context:** Dashboard balance data @@ -191,6 +199,7 @@ interface BalanceSummary { ## Known Issues & Gotchas ### Image URL Validation + **Date:** 2026-01-01 **Context:** Avatar image handling pattern @@ -202,6 +211,7 @@ const isImage = imageUrl && /^(https?:|data:image)/.test(imageUrl); Always check before rendering `` or ``. ### Currency Formatting + **Date:** 2026-01-01 **Context:** Mobile uses utility, web uses inline @@ -211,10 +221,12 @@ Always check before rendering `` or ``. **Consider:** Standardizing currency formatting across platforms. ### Framer Motion in Web + **Date:** 2026-01-01 **Context:** Animation library usage Common patterns: + ```tsx +``` --- ## Dependencies Reference ### Web + - react-router-dom: Routing - framer-motion: Animations - recharts: Charts in Dashboard @@ -335,6 +370,7 @@ _Document errors and their solutions here as you encounter them._ - tailwindcss: Styling ### Mobile + - @react-navigation/*: Navigation - react-native-paper: UI components - axios: API calls (via api/client.js)