Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
447 commits
Select commit Hold shift + click to select a range
e7a67c9
fixed bugs in table
keigocodes May 22, 2025
8181c40
good
keigocodes May 22, 2025
8975426
removed commented file
keigocodes May 22, 2025
fd42ad5
message
appleseedcarrot May 23, 2025
11774ef
cleaning unnecessary imports
keigocodes May 23, 2025
08ec46f
Fixed type errors
appleseedcarrot May 23, 2025
23556ce
Merge pull request #33 from sokanacollectiveCRM/templates
appleseedcarrot May 23, 2025
bbc7ae8
Merge branch 'main' into doula-hours
appleseedcarrot May 23, 2025
e4afaa4
Merge pull request #32 from sokanacollectiveCRM/doula-hours
appleseedcarrot May 23, 2025
2ae854c
Teams page done
danantony06 May 23, 2025
8bf4e5b
Trust
danantony06 May 24, 2025
172895b
Delete src/features/clients/components/dialog/UsersDialogs.tsx
appleseedcarrot May 24, 2025
87976ca
Merge pull request #34 from sokanacollectiveCRM/DemographicData
appleseedcarrot May 24, 2025
8a6251e
fixed bug with notes not showing by editing shared LongText component…
keigocodes May 25, 2025
bbab20c
added seeing all total number of hours
keigocodes May 27, 2025
fc4a06c
Merge branch 'main' into doula-hours
keigocodes May 27, 2025
0d64996
up to date with main
keigocodes May 27, 2025
3992a96
Updates to specific user profile
appleseedcarrot May 27, 2025
0edce6f
Merge branch 'doula-hours' of https://github.com/sokanacollectiveCRM/…
appleseedcarrot May 27, 2025
5228a44
Merge branch 'doula-hours' of https://github.com/sokanacollectiveCRM/…
appleseedcarrot May 27, 2025
5032e0b
fixed bug with notes not showing by editing shared LongText component…
keigocodes May 25, 2025
3dcc44c
added seeing all total number of hours
keigocodes May 27, 2025
1c9f9fb
up to date with main
keigocodes May 27, 2025
d55a295
Updates to specific user profile
appleseedcarrot May 27, 2025
6fd4ece
fixed bugs with tables
keigocodes May 27, 2025
eb4da54
Merge branch 'doula-hours' of https://github.com/sokanacollectiveCRM/…
keigocodes May 27, 2025
3ac129a
removed console.logs
keigocodes May 31, 2025
70ae7b9
merge main
keigocodes May 31, 2025
95f839f
frontend final changes
danantony06 May 31, 2025
8a68e4b
Merge pull request #36 from sokanacollectiveCRM/doula-hours
keigocodes May 31, 2025
1db6f00
Merge pull request #37 from sokanacollectiveCRM/ProfileRework
appleseedcarrot May 31, 2025
2c2387f
removed double component
keigocodes May 31, 2025
59b39f4
Merge branch 'doula-hours'
keigocodes May 31, 2025
8540cff
Fixed request form
appleseedcarrot May 31, 2025
d7a3e90
Fixed request form
appleseedcarrot May 31, 2025
9aa7bc4
Fixed all backend fetches
appleseedcarrot May 31, 2025
8e0a6e1
Merge branch 'main' into showcase
sokanacollectiveCRM May 31, 2025
67930d4
Merge pull request #39 from sokanacollectiveCRM/showcase
appleseedcarrot May 31, 2025
0a0fb8b
Merge pull request #40 from sokanacollectiveCRM/doula-hours
appleseedcarrot Jun 2, 2025
0ba9770
Fixed request form values for service
appleseedcarrot Jun 2, 2025
869a72c
Default sorting is by requested date
appleseedcarrot Jun 2, 2025
59d161e
fixed invoice errors
jbony2888 Jun 4, 2025
87c0c17
fixed creating invoice
jbony2888 Jun 4, 2025
a7cc963
check qb status and rfresh qb status
jbony2888 Jun 4, 2025
fc223d6
commit
jbony2888 Jun 6, 2025
0694c14
commit
jbony2888 Jun 10, 2025
65b483f
Merge branch 'feature/invoice-customer-dev' into dev-branch-06-10-2025
jbony2888 Jun 11, 2025
9b15d7c
merge dev invoice customer branch
jbony2888 Jun 11, 2025
5ec291c
stripe setup
jbony2888 Jun 20, 2025
42cdbc9
made request form public
jbony2888 Jun 24, 2025
fa6f845
fixed type errors
jbony2888 Jun 24, 2025
27cfaca
fix npm issue
jbony2888 Jun 24, 2025
387ac03
fix build issue
jbony2888 Jun 24, 2025
3699576
fix build setup
jbony2888 Jun 24, 2025
5f35ce0
modiofied build
jbony2888 Jun 24, 2025
5013455
fix build issue
jbony2888 Jun 24, 2025
ea74d03
fixed build issue
jbony2888 Jun 24, 2025
09a8189
fix build config
jbony2888 Jun 24, 2025
8cdcc1e
fix type errors
jbony2888 Jun 24, 2025
de5158e
Merge pull request #44 from sokanacollectiveCRM/stripe-setup
sokanacollectiveCRM Jun 24, 2025
26439bf
Add multi-step request form with modular steps
jbony2888 Jul 13, 2025
6595417
commit form
jbony2888 Jul 14, 2025
d7e7749
updated request form
jbony2888 Jul 14, 2025
ba1ced2
fixed tye issue
jbony2888 Jul 14, 2025
5b2489b
Merge pull request #45 from sokanacollectiveCRM/update-request-form
sokanacollectiveCRM Jul 14, 2025
715ae1c
fixed logo path issue
jbony2888 Jul 16, 2025
4bee6f1
Refactor client activity tracking and update flows
jbony2888 Jul 16, 2025
29dedd0
fix: resolve request form validation and UI issues
jbony2888 Jul 19, 2025
d2df4d5
Refactor ESLint config and update Prettier setup
jbony2888 Jul 21, 2025
bb7ea51
Add documentation and complete test suite for client management
jbony2888 Jul 21, 2025
a1447ab
Revise client management system status email
jbony2888 Jul 21, 2025
d65a06f
Update invite action and dialog wording for clients
jbony2888 Jul 21, 2025
aac6145
Merge pull request #46 from sokanacollectiveCRM/form-and-client-list-…
jbony2888 Jul 21, 2025
3c4dc90
Use environment variable for backend URL
jbony2888 Jul 21, 2025
b995993
Merge pull request #47 from sokanacollectiveCRM/form-and-client-list-…
jbony2888 Jul 21, 2025
063964a
commit
jbony2888 Jul 21, 2025
f17cf7e
Improve RequestForm responsiveness and validation
jbony2888 Jul 21, 2025
3d0a517
Merge pull request #48 from sokanacollectiveCRM/form-and-client-list-…
jbony2888 Jul 21, 2025
bf5484e
Fix logo image path in RequestFormDesktop
jbony2888 Jul 21, 2025
5344b35
Merge pull request #49 from sokanacollectiveCRM/form-and-client-list-…
jbony2888 Jul 21, 2025
1e056f3
Add client deletion logic and improve dialogs
jbony2888 Jul 21, 2025
e5686ab
Merge pull request #50 from sokanacollectiveCRM/form-and-client-list-…
jbony2888 Jul 21, 2025
93a0bda
Remove redundant phone field from Step 2 form
jbony2888 Jul 23, 2025
1e7ff16
fixed request form bugs
jbony2888 Jul 23, 2025
c7eded4
Merge pull request #51 from sokanacollectiveCRM/fix-request-foerm-bugs
jbony2888 Jul 23, 2025
bfd9b97
update end point
jbony2888 Jul 23, 2025
39c829b
Merge pull request #52 from sokanacollectiveCRM/fix-request-foerm-bugs
jbony2888 Jul 23, 2025
deb7dc3
commit
jbony2888 Sep 16, 2025
5232f95
commit
jbony2888 Sep 16, 2025
20fa3ae
contract dialog adjusetments
jbony2888 Sep 29, 2025
fe640e7
fixed type error
jbony2888 Sep 29, 2025
d0c8eb7
update contract flow
jbony2888 Oct 2, 2025
b3a6b82
update request form
jbony2888 Oct 9, 2025
958ae85
feat: Add doula assignment feature to client profile modal
jbony2888 Oct 16, 2025
86a7b8c
commit
jbony2888 Oct 16, 2025
f933cc2
updated space
jbony2888 Oct 21, 2025
13d778d
contract updates
jbony2888 Oct 22, 2025
5033ac3
Merge pull request #53 from sokanacollectiveCRM/Feat/Multi-Service-Co…
jbony2888 Oct 22, 2025
15bc229
feat: multi service contract
jbony2888 Nov 6, 2025
38308c2
feat: trigger modal from email link
jbony2888 Nov 10, 2025
e839170
Merge pull request #54 from sokanacollectiveCRM/email-notifications-crm
jbony2888 Nov 10, 2025
ff70766
removed dummy data
jbony2888 Nov 12, 2025
2f7fbe3
fixed type script issue
jbony2888 Nov 12, 2025
166e89e
fix linting issues
jbony2888 Nov 12, 2025
c68e181
fixed linting issues
jbony2888 Nov 13, 2025
d620da0
commit
jbony2888 Nov 13, 2025
d327cd6
Merge branch 'Feat/Multi-Service-Contract-Selection' into dev-nov-13-…
jbony2888 Nov 13, 2025
0338b46
added dashboard stats and calendar pregancy due date
jbony2888 Nov 13, 2025
358e976
feat:dashboard stats
jbony2888 Nov 13, 2025
fed0e61
Merge pull request #55 from sokanacollectiveCRM/feat-dashboard-stats
jbony2888 Nov 13, 2025
0ac9a08
quickbooks fix
jbony2888 Nov 26, 2025
1a7e4b4
Merge pull request #56 from sokanacollectiveCRM/quickbooks-fix
jbony2888 Nov 26, 2025
d8b1bb0
updated vars
jbony2888 Nov 26, 2025
fe30c44
Merge pull request #57 from sokanacollectiveCRM/quickbooks-fix
sokanacollectiveCRM Nov 26, 2025
a270835
quickbooks
jbony2888 Dec 1, 2025
b37ee9c
quickbooks
jbony2888 Dec 8, 2025
05331c4
Merge pull request #58 from sokanacollectiveCRM/quickbooks-fix
jbony2888 Dec 8, 2025
940fb19
doula client view
jbony2888 Dec 9, 2025
63d3cc3
Merge pull request #59 from sokanacollectiveCRM/doula-client-view
jbony2888 Dec 9, 2025
582b623
fix type error
jbony2888 Dec 9, 2025
b4d7f5d
Merge pull request #60 from sokanacollectiveCRM/doula-client-view
jbony2888 Dec 9, 2025
0df1baf
test results update
jbony2888 Dec 27, 2025
c911004
Merge pull request #61 from sokanacollectiveCRM/doula-client-view
sokanacollectiveCRM Dec 27, 2025
9095e5f
client view
jbony2888 Jan 5, 2026
864de57
Merge pull request #62 from sokanacollectiveCRM/client-portal-view
jbony2888 Jan 5, 2026
cbe5546
updated client invite
jbony2888 Jan 14, 2026
1e7b61c
commit
jbony2888 Feb 4, 2026
cb601c1
non phi migration
jbony2888 Feb 5, 2026
2b5e4a3
fixed frontend issues
jbony2888 Feb 9, 2026
175d0f4
fixed
jbony2888 Feb 9, 2026
db1ccdf
fixed type issue
jbony2888 Feb 9, 2026
68c4297
update auth
jbony2888 Feb 9, 2026
a99d580
Merge pull request #64 from sokanacollectiveCRM/hippa-migration-refactor
sokanacollectiveCRM Feb 9, 2026
6fe1342
fixed frontend
jbony2888 Feb 9, 2026
1e86d7a
fixed auh issue
jbony2888 Feb 9, 2026
1e94ee5
Merge pull request #65 from sokanacollectiveCRM/hippa-migration-refactor
sokanacollectiveCRM Feb 9, 2026
ed37365
fixd permission
jbony2888 Feb 9, 2026
6cdd643
Merge pull request #66 from sokanacollectiveCRM/hippa-migration-refactor
sokanacollectiveCRM Feb 9, 2026
e68f383
fixed pihi
jbony2888 Feb 9, 2026
2f5954b
fixed phone number not showing
jbony2888 Feb 10, 2026
25947d8
Merge pull request #67 from sokanacollectiveCRM/hippa-migration-refactor
sokanacollectiveCRM Feb 10, 2026
445027f
update for phi
jbony2888 Feb 10, 2026
a5ae406
Merge pull request #68 from sokanacollectiveCRM/hippa-migration-refactor
sokanacollectiveCRM Feb 10, 2026
c283ee8
split phi
jbony2888 Feb 10, 2026
e887c5b
Merge pull request #69 from sokanacollectiveCRM/hippa-migration-refactor
sokanacollectiveCRM Feb 10, 2026
d3a487e
fixed phone
jbony2888 Feb 10, 2026
b751244
Merge pull request #70 from sokanacollectiveCRM/hippa-migration-refactor
sokanacollectiveCRM Feb 10, 2026
67321fc
Add debug logging for client detail fetch
jbony2888 Feb 10, 2026
3388cfe
Fix TypeScript errors for production build
jbony2888 Feb 10, 2026
8af35a9
Merge pull request #71 from sokanacollectiveCRM/hippa-migration-refactor
sokanacollectiveCRM Feb 10, 2026
ca312c6
connected to posgres for all dsta
jbony2888 Feb 12, 2026
365c598
Merge pull request #72 from sokanacollectiveCRM/hippa-migration-refactor
sokanacollectiveCRM Feb 12, 2026
5e88f01
updated frontend
jbony2888 Feb 21, 2026
d6bf8a0
added eyeball to password input
jbony2888 Feb 23, 2026
3a2516c
added primary and backup roles client doula assignments
jbony2888 Mar 1, 2026
7b4ec15
added services to doulas
jbony2888 Mar 2, 2026
2547bb5
fix QuickBooks connect across backend auth routes
jbony2888 Mar 3, 2026
4247cd0
update client statuses and doula dashboard profile/hour UX
jbony2888 Mar 3, 2026
06fd3dd
commit push updates
jbony2888 Mar 3, 2026
c16a3ae
added address field and fixed bio field
jbony2888 Mar 9, 2026
8863287
required doula documents
jbony2888 Mar 10, 2026
e346d81
chore: Prettier formatting, remove unused vars, request form test data
jbony2888 Mar 10, 2026
e77291d
feat(doulas): add year/quarter filter and fix table text collision in…
jbony2888 Mar 11, 2026
9b1c57f
commiy
jbony2888 Mar 11, 2026
7f78857
feat: doula headshot display + admin download, rename status Intervie…
jbony2888 Mar 11, 2026
7745856
feat: add doula document metadata editing and remove Stripe frontend
jbony2888 Mar 24, 2026
74acf17
fix: resolve build errors and align tests with current auth/form flow
jbony2888 Mar 24, 2026
9b8af3e
test fixs
jbony2888 Mar 24, 2026
43eb269
commit changes for insurance card
jbony2888 Mar 24, 2026
ae788dc
quickbooks payment methods
jbony2888 Apr 23, 2026
658bdbf
Merge pull request #73 from sokanacollectiveCRM/codex/quickbooks-paym…
jbony2888 Apr 23, 2026
ba5175b
refresh insurance card list after delete
jbony2888 Apr 23, 2026
fc6f478
Merge branch 'codex/quickbooks-payment-methods'
jbony2888 Apr 23, 2026
6951444
Merge remote-tracking branch 'origin/main'
jbony2888 Apr 23, 2026
6bb454d
fix insurance card delete refresh
jbony2888 Apr 23, 2026
1ba90a1
Add intake insurance billing fields
jbony2888 Apr 23, 2026
91d26fe
Client billing and payment rules, portal documents, Playwright e2e, a…
jbony2888 May 4, 2026
96d1215
Request form: validation, services step, age/PHI, E2E helpers, test d…
jbony2888 May 12, 2026
31701fb
fix(ts): request form input vs output types for age and zodResolver
jbony2888 May 12, 2026
d386add
fix(request-form): floating labels stay above filled inputs
jbony2888 May 13, 2026
5355778
feat(request-form): require birth location name; hide Medicaid on intake
jbony2888 May 19, 2026
3e009fd
feat(request-form): home type multi-select with Other text
jbony2888 May 24, 2026
6b635e5
feat(request-form): collect other people in home counts on Home Details
jbony2888 May 24, 2026
fb4dd3c
fix(request-form): use ticket label for birth location name field
jbony2888 May 24, 2026
1495603
feat(request-form): complete intake UX tickets with Playwright coverage
jbony2888 Jun 2, 2026
33c956a
fix(request-form): type SupportPersonFields form prop for production …
jbony2888 Jun 2, 2026
7ee4997
fix(request-form): enforce referral step validation and layout regres…
jbony2888 Jun 11, 2026
72ead55
Add billing payment schedule workspace
jbony2888 Jun 11, 2026
2cde61b
Add doula scheduling and availability UI
jbony2888 Jun 16, 2026
c549441
Add portal eligibility readiness workflow
jbony2888 Jul 8, 2026
865cbf8
Fix mapper DTO record cast for build
jbony2888 Jul 8, 2026
605e8bd
Add installment billing workflow to client profiles
jbony2888 Jul 17, 2026
f9b2bc0
Fix frontend CI repository paths
jbony2888 Jul 17, 2026
339096e
Use configured API URL when saving users
jbony2888 Jul 17, 2026
a3e3b1f
Scope frontend lint checks to changed files
jbony2888 Jul 17, 2026
3ace735
Fix Playwright CI app bootstrap
jbony2888 Jul 17, 2026
81c136f
Improve QuickBooks sync experience
jbony2888 Jul 17, 2026
184f084
Secure production frontend logging
jbony2888 Jul 18, 2026
3e4fe13
Merge pull request #74 from sokanacollectiveCRM/agent/sec-01-fe-secur…
jbony2888 Jul 18, 2026
de2f8bd
Add Docker-based Cloud Run deploy for the Vite frontend.
jbony2888 Aug 9, 2026
456dadf
fix(api): route all backend calls through Cloud Run-aware API base
jbony2888 Aug 10, 2026
9475f29
Merge pull request #75 from sokanacollectiveCRM/fix/cloud-run-api-base
sokanacollectiveCRM Aug 10, 2026
56a4c06
Improve Contracts templates UX and Customers QuickBooks empty state.
jbony2888 Aug 10, 2026
9c34091
Fix CI: await addWorkSession and Prettier formatting.
jbony2888 Aug 10, 2026
a767a1e
Fix ESLint no-undef on fetch types in http.ts.
jbony2888 Aug 10, 2026
3e590b7
Merge pull request #76 from sokanacollectiveCRM/fix/contracts-qb-ux
sokanacollectiveCRM Aug 10, 2026
db9cf50
Fix duplicate apiBaseUrl import that broke Cloud Build.
jbony2888 Aug 10, 2026
933d50d
Merge pull request #77 from sokanacollectiveCRM/fix/notes-duplicate-a…
sokanacollectiveCRM Aug 10, 2026
a3d3257
Make the CRM usable on phone and tablet without a leftover sidebar co…
jbony2888 Aug 14, 2026
730b605
Fix CI unit tests and Prettier on the mobile layout PR.
jbony2888 Aug 14, 2026
4f1e832
Use Tailwind v4 @import instead of removed @tailwind components.
jbony2888 Aug 14, 2026
5d63904
Merge pull request #78 from sokanacollectiveCRM/fix/mobile-friendly-l…
sokanacollectiveCRM Aug 14, 2026
ed066d1
Keep CRM light mode when the OS is set to dark.
jbony2888 Aug 14, 2026
68a2bb0
Merge pull request #79 from sokanacollectiveCRM/fix/tailwind-class-da…
sokanacollectiveCRM Aug 14, 2026
2f7bb84
Store the login token so phones can verify session without third-part…
jbony2888 Aug 17, 2026
8f1d3fc
Merge pull request #80 from sokanacollectiveCRM/fix/mobile-session-ve…
sokanacollectiveCRM Aug 17, 2026
63a2c4c
Show Home Type immediately and route profile updates to the right APIs.
jbony2888 Aug 19, 2026
09a036d
Merge pull request #82 from sokanacollectiveCRM/fix/home-type-profile-ui
sokanacollectiveCRM Aug 19, 2026
b9eab26
Fix production build TypeScript errors in profile save flow.
jbony2888 Aug 19, 2026
703dfc1
Apply Prettier formatting to profile build fix files.
jbony2888 Aug 19, 2026
26b95ea
Restore relative imports in clients.service after lint fix.
jbony2888 Aug 19, 2026
288056f
Use @/api absolute imports in clients.service for lint compatibility.
jbony2888 Aug 19, 2026
76be5bb
Merge pull request #83 from sokanacollectiveCRM/fix/frontend-build-ts
sokanacollectiveCRM Aug 19, 2026
7d92617
Point clients.service tests at @/api mocks so PHI ZIP updates are stu…
jbony2888 Aug 19, 2026
44f72e0
Merge pull request #84 from sokanacollectiveCRM/fix/ci-workflow-fixes
sokanacollectiveCRM Aug 19, 2026
6120490
Fix Lead Profile read and save for services and intake fields. (#85)
sokanacollectiveCRM Aug 20, 2026
b5ef242
Lead Profile UX, detail cache, and prefetch (#86)
sokanacollectiveCRM Aug 20, 2026
2320944
Fix Vercel build: align getClientById types with detail cache API. (#87)
sokanacollectiveCRM Aug 20, 2026
331bc2a
Harden Payment Schedule billing errors and gate CSV export to admins.
jbony2888 Aug 20, 2026
c05d489
Fix Export button lint/Prettier and drop unused toolbar props.
jbony2888 Aug 20, 2026
ee34c59
Merge pull request #88 from sokanacollectiveCRM/fix/payment-schedule-…
sokanacollectiveCRM Aug 20, 2026
e8dec4e
Remove sensitive frontend console logging for HIPAA-07.
jbony2888 Aug 22, 2026
6dad8b4
Merge pull request #89 from sokanacollectiveCRM/fix/hipaa-07-frontend…
sokanacollectiveCRM Aug 22, 2026
94a59e3
Add DialogDescription to Lead Profile modal for a11y.
jbony2888 Aug 23, 2026
83be4ca
Merge pull request #90 from sokanacollectiveCRM/fix/lead-profile-dial…
sokanacollectiveCRM Aug 23, 2026
a3f1c53
Add pre-push lint checker and fix LeadProfileModal formatting.
jbony2888 Aug 23, 2026
26dcd59
Route birth outcomes saves to dedicated API and remove legacy narrati…
jbony2888 Aug 23, 2026
6faf1c3
Fix birth-outcomes save TypeScript narrowing for induction boolean.
jbony2888 Aug 23, 2026
b4f34d4
Merge pull request #91 from sokanacollectiveCRM/fix/lead-profile-dial…
sokanacollectiveCRM Aug 23, 2026
b70b1d8
Improve profile photo upload so the picker looks clickable and the av…
jbony2888 Aug 23, 2026
5453d1a
Fix lint and import paths so the profile photo changes can push.
jbony2888 Aug 23, 2026
05e93a0
Merge pull request #92 from sokanacollectiveCRM/fix/profile-picture-u…
sokanacollectiveCRM Aug 23, 2026
67b75b8
Quiet CRM deep-link misses for intake email links (#94)
sokanacollectiveCRM Aug 25, 2026
6b5fbc3
Retire Vercel deploy config from frontend-crm.
jbony2888 Aug 25, 2026
591a6ca
Merge pull request #95 from sokanacollectiveCRM/chore/vercel-retirement
sokanacollectiveCRM Aug 26, 2026
4fa010e
Support Identity Platform auth and GCS-backed contract template previ…
jbony2888 Aug 26, 2026
707944e
Fix CI lint/format on Identity auth and template preview files.
jbony2888 Aug 26, 2026
97fcbfe
Fix Identity Platform reset links dropping oobCode on login.
jbony2888 Aug 28, 2026
8d3c64d
Merge pull request #97 from sokanacollectiveCRM/fix/identity-reset-oo…
sokanacollectiveCRM Aug 28, 2026
d873270
Add native labor support signing UI and billing contract viewing.
jbony2888 Aug 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .cursor/debug-304f79.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{"sessionId":"304f79","runId":"role-update-debug","hypothesisId":"H4","location":"src/features/hours/components/DoulaListPage.tsx:handleRoleUpdate:resolved-ids","message":"Resolved ids before role update","data":{"selectedAssignmentId":"33434fa3-3d18-4ce9-9e41-5bc9adaf10a1-daa6a441-b379-40de-b1c9-2c5ac6d14ca5","selectedAssignmentClientId":"33434fa3-3d18-4ce9-9e41-5bc9adaf10a1","selectedAssignmentDoulaId":"daa6a441-b379-40de-b1c9-2c5ac6d14ca5","resolvedClientId":"33434fa3-3d18-4ce9-9e41-5bc9adaf10a1","resolvedDoulaId":"daa6a441-b379-40de-b1c9-2c5ac6d14ca5","nextRole":"backup"},"timestamp":1772390117804}
{"sessionId":"304f79","runId":"role-update-debug","hypothesisId":"H1","location":"src/api/doulas/doulaDirectoryApi.ts:updateDoulaAssignment:pre-fetch","message":"Preparing role update request","data":{"requestUrl":"http://localhost:5050/api/doula-assignments/33434fa3-3d18-4ce9-9e41-5bc9adaf10a1/daa6a441-b379-40de-b1c9-2c5ac6d14ca5","clientIdLength":36,"doulaIdLength":36,"role":"backup"},"timestamp":1772390117805}
{"sessionId":"304f79","runId":"role-update-debug","hypothesisId":"H2","location":"src/api/doulas/doulaDirectoryApi.ts:updateDoulaAssignment:post-fetch","message":"Received role update response metadata","data":{"responseUrl":"http://localhost:5050/api/doula-assignments/33434fa3-3d18-4ce9-9e41-5bc9adaf10a1/daa6a441-b379-40de-b1c9-2c5ac6d14ca5","status":200,"ok":true,"statusText":"OK"},"timestamp":1772390118597}
23 changes: 23 additions & 0 deletions .cursor/handoffs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Cross-Repo Handoffs

Use this folder to hand work cleanly between frontend and backend.

## Folders

- `open/` -> active requests waiting for pickup
- `done/` -> completed requests with outcome notes

## Naming

Use:

- `YYYY-MM-DD-backend-<slug>.md` for frontend -> backend
- `YYYY-MM-DD-frontend-<slug>.md` for backend -> frontend

## Rule

Every handoff must include:
- clear direction
- exact requested changes
- acceptance criteria
- verification steps
1 change: 1 addition & 0 deletions .cursor/handoffs/done/.gitkeep
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# Handoff: Cloud SQL doula profile parity for profile tab fields

## Metadata
- Direction: `frontend->backend`
- Priority: `P0`
- Requested By: `frontend`
- Date: `2026-03-02`
- Status: `open`
- Related Links:
- `frontend-crm/src/features/doula-dashboard/components/ProfileTab.tsx`
- `frontend-crm/src/api/doulas/doulaService.ts`

## Why This Is Needed
- Doula profile save can fail with `User not found` when legacy `users` row is missing.
- Frontend profile form includes `bio` and address fields that should persist reliably.
- Current source split between Supabase `users` and Cloud SQL `public.doulas` causes drift.

## Current Behavior
- `PUT /api/doulas/profile` may fail for Cloud SQL-only doula identities.
- `public.doulas` now has `bio` migration, but full profile parity is incomplete.
- Field ownership is partially ambiguous across Cloud SQL, Supabase `users`, and Supabase storage.

## Expected Behavior
- Authenticated doula can always load and update profile through `/api/doulas/profile`.
- `bio` persists in Cloud SQL.
- Remaining profile fields have a defined source of truth and are returned consistently.

## Requested Changes
- [ ] Apply migrations in all target environments:
- `src/db/migrations/add_bio_to_doulas.sql`
- `src/db/migrations/add_profile_fields_to_doulas.sql`
- [ ] Ensure `/api/doulas/profile` update path supports Cloud SQL-only doula records.
- [ ] Implement final field ownership:
- Cloud SQL `public.doulas`: `firstname/lastname` (or `full_name` mapping), `email`, `phone_number`, `bio`, `address`, `city`, `state`, `country`, `zip_code`, `account_status`
- Supabase storage: `profile_picture` file storage
- No `business` field support needed
- [ ] Keep response shape compatible with frontend: `{ success, profile }`.

## API/Contract Notes
- Endpoint(s):
- `GET /api/doulas/profile`
- `PUT /api/doulas/profile`
- Request shape:
- Current frontend sends `UpdateProfileData` from `doulaService.ts`.
- Response shape:
- `profile` object with user-facing doula fields:
- required: `firstname`, `lastname`, `email`, `bio`, `address`, `city`, `state`, `country`, `zip_code`, `account_status`
- optional passthrough: `profile_picture` (from Supabase-linked source)
- excluded: `business`
- Backward compatibility:
- Do not break existing frontend parser expectations for `profile`.

## Data/Migration Notes
- Tables:
- `public.doulas`
- optional legacy (read/fallback only): `public.users`
- Required migration:
- `yes` ->
- `src/db/migrations/add_bio_to_doulas.sql`
- `src/db/migrations/add_profile_fields_to_doulas.sql`
- `address TEXT`
- `city TEXT`
- `state TEXT`
- `country TEXT`
- `zip_code TEXT`
- `account_status TEXT NOT NULL DEFAULT 'approved'`

## Backend File Touchpoints
- `src/services/cloudSqlTeamService.ts`
- map/select/update added profile fields from `public.doulas`
- `src/controllers/doulaController.ts`
- ensure GET/PUT profile returns new field set with Cloud SQL-first behavior
- `src/db/migrations/add_profile_fields_to_doulas.sql`
- add missing columns for profile tab parity

## Acceptance Criteria
- [ ] Doula can update `bio` without `User not found` error.
- [ ] `GET /api/doulas/profile` returns updated `bio` after save.
- [ ] Profile update succeeds for users present only in Cloud SQL `public.doulas`.
- [ ] `address`, `city`, `state`, `country`, `zip_code`, `account_status` persist and round-trip through `GET/PUT /api/doulas/profile`.
- [ ] `business` is not required by backend contract and is ignored safely if sent.
- [ ] Contract remains compatible with existing frontend `ProfileTab`.

## Verification Steps
- Backend:
- Run both migrations in Cloud SQL.
- Call `PUT /api/doulas/profile` with `bio`, `address`, `city`, `state`, `country`, `zip_code`, `account_status` and confirm 200.
- Call `GET /api/doulas/profile` and confirm persisted fields.
- Frontend:
- Update bio in profile tab and refresh page.
- Confirm persisted values display and no error toast appears.

## Implementation Notes
- Current frontend relies on `ProfileTab` + `updateDoulaProfile` and expects stable profile payload.
- Profile picture remains in Supabase storage; do not move binary/media storage into Cloud SQL.
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Handoff: Admin cannot see doula documents (ID mismatch)

## Metadata
- Direction: `frontend->backend`
- Priority: `P0`
- Requested By: `frontend`
- Date: `2026-03-11`
- Status: `open`
- Related Links:
- `frontend-crm/src/features/hours/components/AdminDoulaDocumentsSection.tsx`
- `backend/src/controllers/doulaController.ts` (getDoulaDocumentsAdmin)
- `backend/src/repositories/doulaDocumentRepository.ts`

## Why This Is Needed
- Doulas upload documents successfully via doula dashboard (stored in Supabase `doula_documents` with `doula_id` = auth user id).
- Admin views doula profile and sees "0/5 approved" and all "Missing" even when documents exist.
- Root cause: Admin fetches documents using Cloud SQL doula id; documents are stored with Supabase auth user id. For some doulas (e.g. legacy, different creation flows), these ids may differ.

## Current Behavior
- `GET /api/admin/doulas/:doulaId/documents` queries `doula_documents WHERE doula_id = doulaId`.
- `doulaId` comes from the frontend (Cloud SQL `public.doulas.id`).
- Document upload uses `req.user?.id` (Supabase auth user id).
- When Cloud SQL doulas.id ≠ auth user id, admin sees no documents.

## Expected Behavior
- Admin should see all uploaded documents for a doula regardless of id source.
- When documents exist under the auth user id but not the Cloud SQL id, they should be returned.

## Requested Changes
- [x] In `getDoulaDocumentsAdmin`: if primary query by `doulaId` returns 0 documents, add fallback:
1. Fetch doula's email from Cloud SQL `public.doulas` where id = doulaId.
2. Look up Supabase `auth.users` by email to get auth user id.
3. Query `doula_documents` WHERE doula_id = auth_user_id.
4. If documents found, return them (admin sees them; document approval works).
- [ ] Optionally: log when fallback is used for debugging/migration planning.
- [ ] Ensure `getCompleteness(doulaId)` and related calls also use the same resolution (or accept resolved id) so completeness reflects actual documents.

## API/Contract Notes
- Endpoint: `GET /api/admin/doulas/:doulaId/documents`
- Response shape: unchanged (`{ success, documents, completeness }`).
- Backward compatibility: Must not break doulas where ids already match.

## Data/Migration Notes
- Tables: `public.doulas` (Cloud SQL), `auth.users` (Supabase), `public.doula_documents` (Supabase).
- Required migration: No schema change. Fallback logic only.

## Acceptance Criteria
- [ ] Admin views doula profile for info@techluminateacademy.com; uploaded documents appear (not all "Missing").
- [ ] Admin can approve/reject documents that were uploaded by the doula.
- [ ] Doulas where Cloud SQL id = auth id continue to work without regression.

## Verification Steps
- Backend:
- As doula (info@techluminateacademy.com), upload a document via doula dashboard.
- Query Supabase: `SELECT doula_id, file_name FROM doula_documents` — note the `doula_id`.
- Query Cloud SQL: `SELECT id, email FROM public.doulas WHERE email = 'info@techluminateacademy.com'` — compare ids.
- As admin, GET `/api/admin/doulas/{cloud_sql_id}/documents` — should return documents (with fallback if ids differ).
- Frontend:
- Log in as admin, go to Doulas → click doula with info@techluminateacademy.com → View profile & approve documents.
- Required Documents section should show uploaded docs (not all Missing).

## Implementation Notes
- Use Supabase admin client to query `auth.users` by email (service role bypasses RLS).
- The `DoulaDocumentCompletenessService.getCompleteness(doulaId)` is called with the same doulaId — consider passing the resolved id (auth id) when fallback applies, so completeness counts match the returned documents.
18 changes: 18 additions & 0 deletions .cursor/rules/require-backend-preflight-skill.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
description: Require backend preflight skill before each task
alwaysApply: true
---

# Mandatory Backend Preflight Skill

Before starting implementation, first apply:
- `.cursor/skills/sokana-backend-preflight-sync/SKILL.md`

## Rule

- Preflight is required for every task.

## Required before coding

- Update `.cursor/skills/sokana-backend-preflight-sync/backend-context.md` first.
- Record files scanned and contract assumptions.
59 changes: 59 additions & 0 deletions .cursor/rules/task-commands.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
---
description: Task command interface for open handoffs
alwaysApply: true
---

# Task Commands Rule

Treat the following user phrases as explicit task commands in this repo.

## Command: `task`

When the user says `task`:

1. Read `.cursor/handoffs/open/`.
2. List all open task files.
3. For each open task, provide a detailed explanation:
- title and priority
- why it is needed
- requested changes
- acceptance criteria
- current completion status (checked vs unchecked items)
4. If no open tasks exist, say so explicitly.

## Command: `run task`

When the user says `run task` (with or without a task name):

1. Determine target task:
- If user provides a task file name or clear identifier, use it.
- If not provided and only one open task exists, run that one.
- If multiple open tasks exist and no identifier is provided, ask which one.
2. Implement the task end-to-end.
3. Verify result (tests/lints/checks as appropriate).
4. Update task file:
- mark completed checklist items
- update metadata status (`open` -> `closed` or `ready_for_verification`)
- add completion summary
5. If closed, move file from `.cursor/handoffs/open/` to `.cursor/handoffs/closed/`.
6. Report outcome with what was completed and what (if anything) remains.

## Command: `status`

When the user says `status`:

1. Show current task summary:
- total open tasks
- total closed tasks
2. If a task identifier is provided, show detailed status for that task:
- metadata status
- completed vs remaining checklist items
- blockers/next steps
3. If no identifier is provided, show a concise dashboard of all open tasks.

## Normalization

- Treat these variants the same:
- `task`, `tasks`, `list tasks`
- `run task`, `execute task`
- `status`, `task status`
105 changes: 105 additions & 0 deletions .cursor/skills/sokana-backend-preflight-sync/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
---
name: sokana-backend-preflight-sync
description: Runs a mandatory backend-context preflight before frontend implementation for every task to keep frontend and backend context aligned.
---

# Sokana Backend Preflight Sync

## Purpose

Use this skill before frontend tasks that integrate with backend APIs.

This is a mandatory workflow:
1. Run preflight.
2. Update context.
3. Begin implementation.

## Repositories

- Frontend repo (current): `/Users/jerrybony/Documents/GitHub/sokana-crm-frontend/frontend-crm`
- Backend repo (reference): `/Users/jerrybony/Documents/GitHub/backend`

## Required Pre-Task Workflow (Run Every Task)

Before coding, do all steps:

1. Read backend context sources:
- `/Users/jerrybony/Documents/GitHub/backend/.cursor/skills/sokana-doula-cloudsql-sync/SKILL.md`
- `/Users/jerrybony/Documents/GitHub/backend/.cursor/skills/sokana-doula-cloudsql-sync/frontend-context.md`
2. Scan frontend files relevant to the incoming task.
3. Update:
- `.cursor/skills/sokana-backend-preflight-sync/backend-context.md`
4. Report preflight findings.
5. Start implementation only after context update is complete.

If no updates are needed, add a dated "No changes required" entry to `backend-context.md`.

## Cross-Repo Capability (Mandatory For Integration Tasks)

When running from frontend workspace:
- Read backend context from:
- `/Users/jerrybony/Documents/GitHub/backend/.cursor/skills/sokana-doula-cloudsql-sync/SKILL.md`
- `/Users/jerrybony/Documents/GitHub/backend/.cursor/skills/sokana-doula-cloudsql-sync/frontend-context.md`

When running from backend workspace:
- Read frontend implementation directly at:
- `/Users/jerrybony/Documents/GitHub/sokana-crm-frontend/frontend-crm`

If change is needed in the other repo, perform edits in that repo path.

## Minimum Frontend Scan Targets

- `src/api/doulas/doulaService.ts`
- `src/features/doula-dashboard/components/HoursTab.tsx`
- `src/features/doula-dashboard/components/ClientsTab.tsx`
- `src/features/doula-dashboard/components/ActivitiesTab.tsx`
- `src/features/doula-dashboard/components/DocumentsTab.tsx`
- `src/main.tsx`
- `src/common/contexts/UserContext.tsx`
- `src/common/components/routes/ProtectedRoutes.tsx`

## Update Template (backend-context.md)

Use this structure:

```md
## Preflight YYYY-MM-DD

### Task
- <task intent>

### Backend Context Reviewed
- <backend file path>
- <backend file path>

### Frontend Files Scanned
- <frontend file path>

### Contract Expectations
- <request/response shapes expected now>

### Drift Risks
- <what can break>

### Compatibility Required
- <fields/wrappers to support during rollout>

### Action
- [ ] Context updated before coding
- [ ] Implementation started after preflight
```

## Decision Rules

- Preserve compatibility for mixed wrappers/field casing during migrations.
- Keep normalization in API service layer; avoid spreading parsing logic in multiple components.
- Prefer additive compatibility changes before removing legacy fields.
- For stale dashboard data issues, include no-cache strategy in fetch layer.

## Output Requirement

Before any implementation, provide:
- gate result: `run_preflight`
- files scanned,
- context updates made,
- specific compatibility strategy for this task.
Loading