Sizoro

Produkbywerkings

Verskepte veranderinge en regstellings per vrystelling.

Sizoro publiseer een gedeelde produkweergawe oor web, mobiel en API-vrystellingsmetadata.

Huidige ontplooide vrystelling: 6.0.1 (da9ce6a)Gegenereer 23 Mei 2026Open ondersteuning

v6.0.1

Weergawe 6.0.1

Vrygestel 23 Mei 2026

Reggestel

  • fix(uploads,deploy): derive private-URL key from JWT_ACCESS_SECRET + stabilize EAS npm path
  • fix(uploads,env): address PR #137 review — memoize HMAC + require JWT in staging

v6.0.0

Weergawe 6.0.0

Vrygestel 23 Mei 2026

Breekveranderinge

  • phone required at registration + captureInstructionLabelKey helper
  • drop force-majeure worker transfer
  • MessageConversationEntity.bookingId is now
  • Phase 7 — bump Payment / Payout / Cancellation / Dispute policies to 2.0.0
  • Phase 3 + 4 + 5-partial — pre-auth + capture-with-split backend foundation
  • ledger + enums + cancellation pivot for Paystack pre-auth model
  • add CaptureInstruction export + Payment preauth fields
  • GET /api/bookings/credits is removed,
  • API_ENDPOINTS.BOOKINGS.CREDITS and
  • removed credit-related fields and the

Nuut

  • feat: wave 1 follow-on — audit, e2e, monitoring, edge cases, native polish
  • feat: wave 2 — a11y review + performance pass + baseline TS fixes
  • feat(api,fe,mobile,shared): P1+P2 - booking conversationId + employerFirstName + serviceName→serviceNameKey rename
  • feat(api,fe,mobile,shared): P8 typing+presence and P10 image attachments
  • feat(api,fe,mobile,shared): P9 thread search + P12 archive/mute (backend + partial client)
  • feat(api,fe,mobile,shared)!: P13 v1.2 — pair-thread with per-booking divider system cards
  • feat(api,fe,mobile): show worker cancellation count on profile + search
  • feat(api,fe): P7 — Web Push notifications
  • feat(api,mobile,fe): P0 foundation — areas, verification chips, magic link, primitives
  • feat(api,shared): P11 — voice-note message kind with duration metadata
  • feat(api,shared): scaffold MessagesModule (entities, migration, service, REST)
  • feat(api): drop SERVICE_AREA predicate, migrate completed_steps, use ADMIN.AREA_SUGGESTIONS constants
  • feat(api): P6 — Socket.IO Redis adapter for horizontal scaling
  • feat(api): Phase 10 — T-24h preauth refresh processor for long-lead bookings
  • feat(api): Phase 10 — VOID_AND_SIZORO_TRANSFER force-majeure transfer half
  • feat(api): Phase 5.1 + 5.5 — PaymentsService capture/void/reauth + charge webhook handlers
  • feat(api): Phase 5.2 + 5.7-partial — cancellation -> capture wiring + admin force overrides
  • feat(api): Phase 5.3 + 5.7 final — tier-5 cancellation dispute flow with 24h worker appeal
  • feat(api): Phase 5.4 + 5.6 — auto-confirm capture cron + eager worker subaccount provisioning
  • feat(api): wire Socket.IO gateway + booking lifecycle hooks for messaging
  • feat(api): worker strike-appeal backend + admin review endpoints
  • feat(api)!: Phase 3 + 4 + 5-partial — pre-auth + capture-with-split backend foundation
  • feat(fe,mobile): wire i18n keys for new pivot screens
  • feat(fe,mobile): worker strikes + admin appeals UI
  • feat(fe): P11 client — MediaRecorder voice composer + playback bubble
  • feat(fe): Phase 6.1 — drop payouts UI, add earnings-history + tier-5 dispute screens
  • feat(fe): Phase D web messaging - inbox, thread, socket provider, nav badge
  • feat(i18n): Phase 10 — translation catalogue coverage for new pivot messageKeys
  • feat(legal)!: Phase 7 — bump Payment / Payout / Cancellation / Dispute policies to 2.0.0
  • feat(mobile,fe,api,shared): service-area screen, admin suggestions, drag-resize, pulse, translations
  • feat(mobile,fe,shared): P2 worker journey — areas pill, map picker, weekly calendar
  • feat(mobile,fe): P1 employer journey — dashboard, chips card, address pill, search refactor
  • feat(mobile,fe): P11 client — voice recorder composer + playback bubble
  • feat(mobile,fe): P12 client UX — inbox tabs + thread overflow menu + archive/mute hooks
  • feat(mobile): Phase 6.2 — drop payouts screen, add earnings-history + dispute appeal UI
  • feat(mobile): Phase C messaging - inbox, thread, socket-client, push deep-link
  • feat(security,uploads,identity): signed private upload URLs + Smile ID freshness
  • feat(shared,mobile,fe): drop SERVICE_AREA enum, add admin endpoints, polygon drawing, hint surface
  • feat(shared): add area + verification types (P0.5 cycle 1/2)
  • feat(shared): add assetUrl to message image/voice payloads
  • feat(shared): add conversation-format helpers (cycle 2/2)
  • feat(shared): add geo, address-format, verification-chips, booking-pause helpers (P0.5 cycle 2/2)
  • feat(shared): add messaging types, endpoints, and socket constants (cycle 1/2)
  • feat(shared): darken brand emerald to 176A55 for WCAG AA + add messages search-too-short i18n
  • feat(shared): extend SetBookingPauseRequest with autoDeclineOpenRequests
  • feat(shared): regenerate typed translation-key registry for new auth.deepLink + api.* keys
  • feat(shared): regenerate typed translation-key registry for P1 verification + address-pill + search-refactor keys
  • feat(shared): scaffold strike-appeal contracts + endpoints
  • feat(shared)!: ledger + enums + cancellation pivot for Paystack pre-auth model
  • feat(shared)!: phone required at registration + captureInstructionLabelKey helper
  • feat(types,utils): publicise worker cancellation count
  • feat(types)!: add CaptureInstruction export + Payment preauth fields

Reggestel

  • fix(api,fe,mobile,messaging): task 6 batch — block, cursor, throttles, PII, parity
  • fix(api,fe): bring tests + sendMessage UPDATE up to the payout-pivot + P12 shape
  • fix(api,fe): consume phone-required contract + shared captureInstructionLabelKey
  • fix(api,migrations): rename RatingReportsAndUserBlocks after InitialLocalMvp + compat shim
  • fix(api): add messagesService arg to PaymentsService test in api-response.spec.ts
  • fix(api): dev-mode stub when GOOGLE_PLACES_API_KEY is missing
  • fix(api): messaging conversation FK + e2e DB drift unblock
  • fix(api): provide findConversationIdForBooking stub in PaymentsService test
  • fix(api): resolve merge conflicts + repair build after publish/pull cycle
  • fix(api): split P10/P11 messaging migrations to satisfy Postgres safe-enum-use; fix P13 down type-mismatch
  • fix(api): wire getWorkerEarningsSummary against the post-pivot ledger
  • fix(ci): pin @rollup/rollup-linux-x64-gnu so Linux CI npm ci resolves it , closes npm/cli#4828
  • fix(fe,mobile): refresh AuthSession after onboarding wizard completes
  • fix(i18n): add api.messages.error.* keys for messaging V1 module
  • fix(i18n): add api.payments.error.tipWorkerSubaccountMissing locales
  • fix(i18n): add P10 attachment error keys to api.messages.error catalogue
  • fix(i18n): translate zu/af FIXMEs for messaging V1, account delete, ratings, blocks
  • fix(messaging,notifications): pair-thread archive reuse + system-card push skip
  • fix(mobile,api): compact step indicator + Cape Town worker seed
  • fix(mobile): auto-navigate to booking detail after Paystack verify
  • fix(mobile): break infinite render loop in post-email-verify navigation
  • fix(mobile): dev-mode stub for AddressAutocomplete when Google Places is unreachable
  • fix(mobile): separate Terms/Privacy links from the consent checkbox row
  • fix(payments): adapter ref + tip subaccount + resume split + ledger gaps
  • fix(security): enforce signed URLs for private message attachments
  • fix(shared): align pricing.paystackSplit + worker_bank_setup soft block

Verbeter

  • refactor(api,fe,mobile)!: drop credits framing end-to-end
  • refactor(api): kill legacy charge.success verify path + add refund-after-settlement guard
  • refactor(api): Phase 10 — rename dispute-window-release processor to auto-confirm-capture
  • refactor(api): rename dispute-window.helper → auto-confirm-window.helper + close capturedAt gap
  • refactor(brand): regenerate assets with darkened emerald 176A55
  • refactor(fe,mobile): payment-gateway-agnostic user copy
  • refactor(fe): drop Paystack from footer + SEO description copy
  • refactor(payments,shared,docs)!: drop force-majeure worker transfer
  • refactor(shared,api,fe,mobile): extend UploadIntentPurpose with voice_message and drop the cast workarounds
  • refactor(types)!: remove vestigial inconvenience-credit / bookings-credits contracts
  • refactor(utils)!: drop credits API endpoint and inconvenience-credit outcome fields

Verander

  • build(husky): bump Node heap on pre-commit + pre-push hooks
  • build(mobile): align @types/react with root override + add JSX shim

Verander

  • chore: P3 + P4 — DB bootstrap script + Maestro docs + dead error-code cleanup + regex coverage
  • chore: Phase 10 — grep-sweep cleanup of residual legacy framing
  • chore: regenerate translation-key registry for task-6 additions
  • chore: translate pivot zu/af FIXMEs + drop legacy custody.zar tip-capture spec
  • chore(api,build): include .spec.ts in node-api tsconfig; revert lint default-project bump
  • chore(api,fe,shared): P7 follow-ups — deprecate WEB device-token dispatch, multiplex NotificationDelivery, point SW at existing icon
  • chore(api): Phase 10 — drop legacy payout env vars
  • chore(api): seed search-matchable demo worker for tutorials
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): refresh package-lock.json against @sizoro/* 3.2.0
  • chore(deps): regenerate package-lock.json after @types/react override
  • chore(lint): clean P8 + P10 + workers.service eslint findings; bump default-project file count
  • chore(lint): set react-hooks/exhaustive-deps to off pending #134 sweep
  • chore(lint): wire eslint-plugin-react-hooks across web + mobile; fix 5 latent rules-of-hooks violations it surfaced
  • chore(mobile,fe,shared): P3 cleanup — drop obsolete email-verification screen + notVerifiedBanner keys
  • chore(mobile,fe): items 1-3 — tab badge a11y + nav-badge spec resilience
  • chore(mobile): add testID coverage for employer journey screens
  • chore(shared): regenerate translation-keys for new locale entries
  • chore(shared): regenerate translation-keys registry for P10 attachment keys
  • chore(types): regenerate translation-key registry for AddressAutocomplete dev-stub copy
  • chore(types): regenerate translation-key registry for cancellation copy

v5.1.0

Weergawe 5.1.0

Vrygestel 20 Mei 2026

Nuut

  • feat(api,fe,mobile): denormalize worker name on booking response
  • feat(api): hydrate onboarding snapshot on every auth response
  • feat(fe,mobile): date+time picker primitives for the booking flow
  • feat(fe): employer-auth-gate /search and /workers/[id], drop signed-out Book link
  • feat(fe): web onboarding gate + bypass allowlist in AuthRequired
  • feat(mobile): onboarding gate in role layouts + verification routing
  • feat(types,utils): onboarding snapshot + booking-step URL param helpers
  • feat(types): denormalize workerFirstName/workerLastName onto Booking

Reggestel

  • fix: address copilot review on PR #131
  • fix(fe,mobile): propagate AuthSession.onboarding to all consumers
  • fix(mobile): backfill missing account-hub / identity / search translations
  • fix(mobile): prevent OAuth callback re-firing after language change

Verander

  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]

v5.0.1

Weergawe 5.0.1

Vrygestel 20 Mei 2026

Reggestel

  • fix(api): drop stale UserDeletionService export from AdminModule

Verander

  • chore(i18n): drop orphan employer.booking.workerPayout breakdown keys

v5.0.0

Weergawe 5.0.0

Vrygestel 20 Mei 2026

Breekveranderinge

  • add expectedRateeId to RatingListResponse

Nuut

  • feat(account): add Help & support entry to Account hub on both platforms
  • feat(account): add IdentityCard with re-verify entry on both platforms
  • feat(account): add web Account hub with sections mobile already had
  • feat(api): add change-password, update-profile, and set-default-address endpoints
  • feat(auth): user-initiated account deletion (Apple 5.1.1(v), Google)
  • feat(employer): add Workers tab + /workers index (recently-booked)
  • feat(employer): extract Confirm-booking sub-screen from search
  • feat(fe,mobile): useFirstError helper + warning variant on StatusPanel/StatusCard , closes #F4B860
  • feat(fe): /bookings list route with role-aware view + worker access to booking detail
  • feat(fe): add /account page for profile, addresses, language, and password
  • feat(icons,eslint): adopt simple-icons for monochrome OAuth marks + no-restricted-imports guards
  • feat(identity): consent screen before SA ID submission (Apple 5.1.1)
  • feat(mobile,fe): multi-select services + worker rating count + compact filters on Find workers
  • feat(mobile,fe): post-booking rating submission UI for employer + worker
  • feat(mobile,fe): rename tabs to target IA (Today/Schedule/Earnings/Book/Account)
  • feat(mobile): add profile, addresses, language, and password cards
  • feat(mobile): add tabBarButtonTestID to employer and worker tab bars
  • feat(mobile): group Account-hub cards under named section primitives
  • feat(mobile): iPad two-column layout for onboarding wizards (worker + employer)
  • feat(mobile): worker bookings tab with list + detail screens
  • feat(ratings,users): UGC moderation — report ratings + block users (Apple 1.2, Google UGC)
  • feat(shared-utils): add service icon-key map for cross-platform reuse
  • feat(shared): add api client helpers, auth/booking predicates, oauth, json types (S-06..S-10, S-12)
  • feat(shared): add change-password, profile, and default-address contracts
  • feat(shared): add error codes for change-password and profile endpoints
  • feat(shared): add types + endpoints for account deletion and rating moderation
  • feat(shared): extract booking-lifecycle, country-flags, payout-request-validation, UPLOADS.INTENT
  • feat(types)!: add expectedRateeId to RatingListResponse
  • feat(worker): availability and payouts quick fixes (S5 + S6)
  • feat(worker): relabel dashboard metric strip to today-focused earnings

Reggestel

  • fix(api,fe): drop /.claude/worktrees/ from jest testPathIgnorePatterns
  • fix(api,mobile,fe): address PR review on rating endpoint + plural copy + e2e
  • fix(deploy): surface PM2 boot failures instead of silently passing
  • fix(fe,mobile): preserve raw PhoneInput keystrokes; defer toE164 to blur
  • fix(fe,mobile): use Facebook brand mark for OAuth instead of lucide glyph F2
  • fix(fe): null-guard useSearchParams in identity reverify mode
  • fix(fe): UX quick wins (prop-sync guards, error rendering, modal overflow) eb
  • fix(i18n): restore web rateSuggestion keys + regen typed-keys registry
  • fix(locales): backfill 102 orphan API messageKey values
  • fix(mobile): drop redundant as string | undefined on process.env reads
  • fix(mobile): iPad UX polish — flex Paystack WebView, centered tablet modals
  • fix(mobile): strip unused permissions and add iOS privacy manifest via app.config.js
  • fix(mobile): tighten process.env / require.context typings to satisfy strict lint
  • fix(mobile): UX quick wins (keyboard taps, stale date, payout snap-back)
  • fix(routing): point worker registration + edit-profile to canonical paths

Verbeter

  • refactor(api): replace 'ZAR' literals with CurrencyCode.ZAR enum
  • refactor(employer): extract booking-detail tip sheet + rebook sub-screen
  • refactor(fe,mobile): consume remaining shared helpers (booking-actions, auth-verification, oauth, JSON) from @sizoro
  • refactor(fe,mobile): consume shared helpers from @sizoro packages
  • refactor(fe,mobile): drop worker-payout line from employer-facing breakdowns
  • refactor(mobile,fe): use shared getServiceIconKey for cross-platform icon map
  • refactor(mobile): demote support and payment tabs from persistent nav
  • refactor(worker-onboarding): retire legacy single-page form and dead fallback
  • refactor(worker): trim worker dashboard chrome and gate banners by priority

Verander

  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(i18n): add bookings list keys + regenerate registry
  • chore(i18n): add Phase 6 tab/nav keys (today/schedule/earnings/book/workers)
  • chore(i18n): prune orphan worker-onboarding locale keys
  • chore(merge): Phase 4 worker dashboard cleanup
  • chore(merge): Phase 5 Account hub redesign + IdentityCard + S5/S6 fixes
  • chore(release): store-listing URLs + review notes + Apple 4.8 env guard

v4.0.0

Weergawe 4.0.0

Vrygestel 18 Mei 2026

Breekveranderinge

  • replace Sumsub with Smile ID NATIONAL_ID_NO_PHOTO
  • replace Sumsub shared types with provider-agnostic contracts

Nuut

  • feat(fe): tab indoor/outdoor service categories on employer search
  • feat(identity)!: replace Sumsub shared types with provider-agnostic contracts
  • feat(identity)!: replace Sumsub with Smile ID NATIONAL_ID_NO_PHOTO
  • feat(mobile): add testIDs and a11y labels for auth screens
  • feat(mobile): add testIDs and a11y labels for employer screens
  • feat(mobile): add testIDs and a11y labels for worker screens
  • feat(mobile): tab indoor/outdoor service categories on employer search
  • feat(mobile): wire testID/accessibilityLabel pass-through on shared components

Reggestel

  • fix(fe): scope PasswordInput accessibility label to the input only
  • fix(identity): block verify resubmission after approval
  • fix(identity): bound Smile ID verify request time
  • fix(identity): harden Smile ID verification state handling
  • fix(identity): surface dha retry errors
  • fix(mobile): defer worker onboarding step advance
  • fix(mobile): handle missing worker payout details
  • fix(mobile): render NumberInputField directly on worker identity step

Verander

  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(identity): document SMILE_ID env-var templates + correct partner_id note

v3.1.2

Weergawe 3.1.2

Vrygestel 18 Mei 2026

Reggestel

  • fix(api): sync verified onboarding steps
  • fix(deploy,mobile): PR #126 reviewer feedback
  • fix(deploy): stop pm2 before nest build to avoid mid-build crash
  • fix(mobile): blur address search after selection
  • fix(mobile): keep forms visible above keyboard
  • fix(mobile): label shared field inputs for accessibility
  • fix(mobile): support pasted phone OTP
  • fix(mobile): use radio role selector on signup

v3.1.1

Weergawe 3.1.1

Vrygestel 18 Mei 2026

Reggestel

  • fix(legal): remove parent-company name from user-facing legal copy
  • fix(mobile): disable password autofill on registration
  • fix(web): prevent auth hydration loading hang

v3.1.0

Weergawe 3.1.0

Vrygestel 18 Mei 2026

Nuut

  • feat(legal): finalise pre-launch legal documents (SA-lawyer sign-off, all docs at v1.0.0)

Reggestel

  • fix(legal): drop placeholder postal address and consolidate contact email
  • fix(mobile): allow local android API during development
  • fix(mobile): format employer search start time
  • fix(mobile): interpolate selected address label
  • fix(mobile): label employer onboarding address search
  • fix(mobile): make register terms label tappable
  • fix(mobile): remove redundant onPress on register terms label (PR #124)
  • fix(mobile): satisfy android network security lint
  • fix(web): harden booking extras payment summary
  • fix(web): prevent signup verification redirect stall
  • fix(web): route employer signup into verification

Verander

  • chore(deps): bump shared packages [skip ci]

v3.0.0

Weergawe 3.0.0

Vrygestel 17 Mei 2026

Breekveranderinge

  • API_ENDPOINTS.BOOKINGS.EXTRAS_LIST and EXTRAS_DETAIL are
  • enforce signup legal acceptance

Nuut

  • feat: adopt v0.4.0 shared packages + wire register acceptance versions
  • feat(addresses): Google Places autocomplete + server-side validation
  • feat(addresses): Google Places autocomplete + server-side validation
  • feat(auth): phone+email verification UI wiring
  • feat(auth)!: enforce signup legal acceptance
  • feat(bookings): apply weekend and public holiday worker rates
  • feat(bookings): cancellation policy enforcement (Workstream M)
  • feat(bookings): redeem inconvenience credits at checkout + worker unverified banner
  • feat(bookings): show inconvenience-credit redemption at checkout (Workstream O UI)
  • feat(identity): harden sumsub webhook signature, replay, and payload shape
  • feat(identity): Sumsub KYC integration (Workstream C)
  • feat(onboarding): backend wizard state machine (Workstream B) , closes shared/utils#API_ERROR_CODES
  • feat(onboarding): employer between-bookings wizard (Workstream B)
  • feat(onboarding): inline forms for employer wizard phase-2 steps
  • feat(onboarding): inline forms for worker wizard HOME_ADDRESS and SERVICE_AREA
  • feat(onboarding): inline worker availability step
  • feat(onboarding): inline worker bio step
  • feat(onboarding): inline worker booking-rules step
  • feat(onboarding): inline worker hourly-rate step
  • feat(onboarding): inline worker profile-photo step
  • feat(onboarding): inline worker review step
  • feat(onboarding): inline worker services step
  • feat(onboarding): wire phase-2 modal into booking-create screens
  • feat(onboarding): worker wizard shell on mobile (Workstream B)
  • feat(onboarding): worker wizard shell on web (Workstream B)
  • feat(scripts): block "your/account/earnings balance" in launch copy
  • feat(scripts): scan node-api email locales for forbidden launch copy
  • feat(shared): add Booking.creditAppliedAmount for inconvenience-credit redemption
  • feat(shared): add identity passport-waitlist + webhook-invalid-payload codes
  • feat(shared): add polish bundle contracts
  • feat(shared): add weekend holiday rate contracts
  • feat(shared): add worker rate suggestion contract
  • feat(shared): add worker service area contracts
  • feat(shared): Address.suburb + Google Places utility
  • feat(shared): cancellation outcome helper + tier-boundary tests
  • feat(shared): employer phase-2 onboarding contracts (Workstream B)
  • feat(shared): identity types + SA ID validator for Workstream C
  • feat(shared): legal acceptance versions + cancellation contract for Workstreams I + M
  • feat(shared): onboarding step types + endpoints for Workstream B
  • feat(shared): trusted-employer contracts for Workstream Q
  • feat(ux): polish employer and worker launch flows
  • feat(workers): add suburb rate suggestions
  • feat(workers): replace radius with service areas
  • feat(workers): trusted-employer auto-accept allowlist (Workstream Q)
  • feat(workers): trusted-employers UI (Workstream Q follow-up)

Reggestel

  • fix: reduce sentry noise and repair smtp config
  • fix(admin): enforce AtLeastOne runtime guard on UpdateService/UpdateCountry
  • fix(api,web,mobile,scripts): PR #123 Copilot review pass (12 findings)
  • fix(api,web,mobile): PR #123 review fixes (P1 sumsub/credit-skip/payment-state, P2 rebook)
  • fix(api): balance ledger for inconvenience-credit-funded bookings (PR #123 P1)
  • fix(api): bound GooglePlacesAdapter cache with LRU eviction
  • fix(api): invalidate rate-suggestion cache on worker pricing changes
  • fix(api): lock booking-credit rows for the redemption transaction
  • fix(api): make consumeChallenge atomic against concurrent calls
  • fix(api): pass transaction manager to ledger.recordTransaction in dispute window release
  • fix(api): reject admin role in regular booking cancel path
  • fix(api): reject dispute resolution when refund requested but no payment exists
  • fix(api): reject empty areas array in ReplaceWorkerServiceAreasDto
  • fix(api): require clientPriceBreakdown on RebookBookingDto
  • fix(api): treat phoneVerifiedAt alone as proof of phone verification
  • fix(auth): align phone input accessible labels
  • fix(auth): narrow OAuthStartDto + drop redundant local OAuthStartRequest
  • fix(bookings): restore worker verification gate
  • fix(deploy): write transient .npmrc on prod servers from NODE_AUTH_TOKEN
  • fix(mobile): add missing category field to Service test fixtures
  • fix(mobile): guard address-autocomplete query prop-sync against user input
  • fix(mobile): harden Sumsub WebView token injection and origin whitelist
  • fix(mobile): include SCOPE rating dimension + clientPriceBreakdown on rebook
  • fix(mobile): remove as never route casts in onboarding flow
  • fix(mobile): wrap blocking modals in KeyboardAvoidingView
  • fix(nextjs-fe): add missing category to e2e service fixture
  • fix(nextjs-fe): adopt BOOKINGS.EXTRAS in extras-panel (followup)
  • fix(nextjs-fe): guard AddressAutocomplete query against prop-sync override
  • fix(nextjs-fe): guard LanguagePreferenceStep against prop-sync override and type response
  • fix(nextjs-fe): trap keyboard focus inside phase-2 onboarding modal
  • fix(nextjs-fe): wire OTP inputs to verifyCode error region for screen readers
  • fix(onboarding): guard prop-sync hydration in worker step components
  • fix(places): allow local provider endpoints
  • fix(ratings): require all RatingDimension scores in strict shape
  • fix(shared): add service category to admin contracts
  • fix(web): avoid nested address labels
  • fix(web): route employer onboarding completion to search

Verbeter

  • refactor(api): adopt canonical BOOKINGS.EXTRAS / EXTRA_BY_ID constants
  • refactor(types): enforce strict shapes on contract requests
  • refactor(utils)!: remove duplicate booking-extras endpoint aliases

Verander

  • build(husky): typecheck shared packages in pre-commit

Verander

  • chore(api): merge workers/auth/places PR 122 review fixes
  • chore(deps-dev): bump @semantic-release/release-notes-generator (#117)
  • chore(deps): bump bullmq from 5.76.4 to 5.76.9 (#119)
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump zustand from 5.0.12 to 5.0.13 (#121)
  • chore(eslint): bump maximumDefaultProjectFileMatchCount to 35 for new spec files
  • chore(nextjs-fe): merge web frontend PR 122 review fixes
  • chore(repo): gitignore .npmrc and claude runtime artifacts
  • chore(shared): merge shared types/utils + tooling PR 122 fixes

v2.0.0

Weergawe 2.0.0

Vrygestel 16 Mei 2026

Breekveranderinge

  • rename earnings fields and drop wallet/balance framing

Nuut

  • feat: 48h dispute window + employer confirm-completion + bilateral rating fixes
  • feat(shared): 48h dispute window, employer confirm-completion, bilateral rating aggregates

Reggestel

  • fix: address PR #116 review feedback (disputes, ratings, confirm-completion, copy)
  • fix(e2e): add employerConfirmedAt to web Booking fixture
  • fix(test): update booking + employer profile fixtures for new shared types

Verbeter

  • refactor: align consumers with renamed earnings fields and drop wallet/balance copy
  • refactor: canonical Employer/Worker role labels + mobile search parity
  • refactor(shared)!: rename earnings fields and drop wallet/balance framing

Verander

  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]

v1.1.0

Weergawe 1.1.0

Vrygestel 15 Mei 2026

Nuut

  • feat: password reset (web+mobile), admin user deletion, email i18n (#112)

Reggestel

  • fix(admin): address three Copilot review comments on PR #114 (#115)

Verander

  • chore(deploy): wire APPLE_TEAM_ID + ANDROID_APP_FINGERPRINTS to frontend (#113)

v1.0.9

Weergawe 1.0.9

Vrygestel 14 Mei 2026

Reggestel

  • fix(auth): improve auth UX and admin bootstrap
  • fix(auth): localize duplicate email failures
  • fix(auth): relax password rules and improve signup errors
  • fix(shared): relax password validation
  • fix(web): add password visibility toggles
  • fix(web): preserve network error cause

Verander

  • chore(deps): bump shared packages [skip ci]

v1.0.8

Weergawe 1.0.8

Vrygestel 13 Mei 2026

Reggestel

  • fix(mobile): align maps dependency with Expo SDK

v1.0.7

Weergawe 1.0.7

Vrygestel 13 Mei 2026

Reggestel

  • fix(auth): address telemetry review feedback
  • fix(auth): capture client auth failures
  • fix(auth): capture mobile auth failures in sentry
  • fix(mobile): add sign-in return from registration
  • fix(shared): align API endpoint and error contracts

Verander

  • chore(deps): bump @microsoft/react-native-clarity from 4.5.3 to 4.6.2 (#99)
  • chore(deps): bump expo-localization from 16.0.1 to 55.0.13 (#100)
  • chore(deps): bump expo-updates from 0.27.5 to 55.0.21 (#97)
  • chore(deps): bump react-native-maps from 1.18.0 to 1.27.2 (#96)
  • chore(deps): bump react-native-screens from 4.4.0 to 4.25.0 (#98)
  • chore(deps): bump shared packages [skip ci]

v1.0.6

Weergawe 1.0.6

Vrygestel 12 Mei 2026

Reggestel

  • fix(mobile): submit android releases as draft
  • fix(mobile): validate signup and diagnostics consent

v1.0.5

Weergawe 1.0.5

Vrygestel 12 Mei 2026

Reggestel

  • fix(mobile): set app store connect app id

v1.0.4

Weergawe 1.0.4

Vrygestel 11 Mei 2026

Reggestel

  • fix(mobile): disable sentry artifact upload

v1.0.3

Weergawe 1.0.3

Vrygestel 11 Mei 2026

Reggestel

  • fix(mobile): patch localization for xcode 26

v1.0.2

Weergawe 1.0.2

Vrygestel 11 Mei 2026

Reggestel

  • fix(mobile): use xcode 26 eas image

v1.0.1

Weergawe 1.0.1

Vrygestel 11 Mei 2026

Reggestel

  • fix(web): avoid duplicate country flag

v1.0.0

Weergawe 1.0.0

Vrygestel 11 Mei 2026

Nuut

  • feat: add authenticated support ticket parity
  • feat: add brand assets and logo adoption
  • feat: add Clarity consent controls
  • feat: complete local MVP foundation
  • feat: harden local MVP flows
  • feat: polish web mobile booking ux parity
  • feat: scaffold local MVP flows
  • feat: wire local MVP flows
  • feat(admin): add hardened payout action endpoints
  • feat(admin): add hardened payout actions
  • feat(admin): add payments list operations
  • feat(admin): add support action controls
  • feat(admin): read-only payments list + detail with refund attempts
  • feat(api): add admin audit timeline
  • feat(api): add admin service country archive operations
  • feat(api): add admin support actions and audit log infrastructure
  • feat(api): add admin webhook replay operations
  • feat(api): add device token registration endpoints for push notifications
  • feat(api): add dispute operations
  • feat(api): add GET /workers/me/ledger self-service ledger endpoint
  • feat(api): add push notification outbox dispatch
  • feat(api): add Redis-backed JWT blocklist to close 15-min revocation gap , closes auth.service.ts#signAccessToken
  • feat(api): admin CRUD for services + countries with archive-only removal
  • feat(api): admin webhook replay endpoint + dispatcher extraction
  • feat(api): convert payout ledger to double-entry with reconciliation
  • feat(api): disputes user endpoints, timeline, 7-day window, ledger holds, ZAR-split resolution
  • feat(api): extras list/detail endpoints + paymentState lifecycle + outstandingAmount on booking-detail
  • feat(api): implement employer refund disbursement via Paystack
  • feat(api): merge ledger double-entry accounting
  • feat(api): merge PR #15 refresh token families
  • feat(api): merge PR #16 weekly payout batches
  • feat(api): merge PR #17 transfer webhook reconciliation
  • feat(api): payment-state endpoints + consume team2-unblocking shared contracts
  • feat(api): per-device refresh token families with reuse detection
  • feat(api): push notification outbox dispatch (async)
  • feat(api): rate-limit auth endpoints and add account lockout
  • feat(api): reconcile paystack transfer webhook events with payouts
  • feat(api): schedule weekly payout batches with bullmq
  • feat(api): unified admin audit timeline endpoint
  • feat(api): wire production observability and add operations runbooks
  • feat(auth): add self-service account unlock via email or SMS
  • feat(auth): add social sso across web and mobile
  • feat(employer): reuse saved service addresses
  • feat(infra): pivot production deploy to ec2
  • feat(mobile): add employer booking payment detail flow
  • feat(mobile): add push device registration
  • feat(mobile): harden auth session lifecycle
  • feat(mobile): harden auth session lifecycle
  • feat(obs): wire sentry and production deploy pipelines
  • feat(payments): canonical refund attempts
  • feat(payments): canonical Refund entity for attempt tracking
  • feat(payments): pending accounts + dispute-window release job
  • feat(pricing): round fees up to nearest rand, drop minimum hourly rate
  • feat(resilience): add circuit breaker + retry-with-backoff for all provider calls
  • feat(shared): add admin audit contracts
  • feat(shared): add admin refund endpoint
  • feat(shared): add admin webhook event + push device response contracts
  • feat(shared): add ConfirmUnlockResponse + OUTBOX_ENTRY_NOT_FOUND for team2 unblocking
  • feat(shared): add error-codes coverage and locale-completeness guard test
  • feat(shared): add full production support contracts
  • feat(shared): add OAuth SSO contracts
  • feat(shared): add support admin contracts
  • feat(shared): add support admin operation contracts
  • feat(shared): add worker ledger contract
  • feat(shared): close Team 2 contract gaps for payouts, refunds, disputes, notifications, auth unlock
  • feat(shared): consolidate wave 2 and wave 3 endpoint constants and types
  • feat(shared): consolidate wave contracts
  • feat(web-mobile): add auth unlock recovery
  • feat(web-mobile): add extras overtime parity
  • feat(web-mobile): add localization controls and phone inputs
  • feat(web-mobile): add user dispute parity
  • feat(web,mobile): add support ticket parity
  • feat(web): add admin catalog operations
  • feat(web): add admin catalog operations
  • feat(web): add admin notification operations
  • feat(web): add admin operational timeline
  • feat(web): add admin payment inspection
  • feat(web): add admin payment refund action
  • feat(web): add admin payout actions
  • feat(web): add admin webhook replay
  • feat(web): add production legal seo and observability
  • feat(web): add public changelog release pipeline
  • feat(web): complete production legal support routes
  • feat(web): productionize auth verification flows
  • feat(web): productionize auth verification flows

Reggestel

  • fix: align country and social auth icons
  • fix: block unavailable payout requests
  • fix: consume shared package contracts
  • fix: enforce strict local booking contracts
  • fix: localize payout no-balance errors
  • fix: require payment coverage for bookings
  • fix: resolve profile-owned addresses
  • fix(api): address copilot review comments on env validation PR
  • fix(api): address copilot review comments on observability PR
  • fix(api): address copilot review comments on paystack hardening PR
  • fix(api): address copilot review comments on refresh-token families pr
  • fix(api): address copilot review comments on transfer reconciliation pr
  • fix(api): address device token review feedback
  • fix(api): align jwt ttl typing for nest jwt 11
  • fix(api): align ledger accounting merge fixes
  • fix(api): align worker ledger contracts
  • fix(api): correct booking outstanding state
  • fix(api): enforce jwt jti contract
  • fix(api): enforce production env validation and lock CORS
  • fix(api): harden payout webhook reconciliation
  • fix(api): harden paystack charge verification and gate booking extras on payment
  • fix(api): harden provider resilience review issues
  • fix(api): harden refund disbursement flow
  • fix(api): repair admin payment schema
  • fix(api): repair env validation test types
  • fix(api): run migrations before local dev start
  • fix(api): tighten paystack verification followups
  • fix(auth): complete post-auth redirects
  • fix(auth): harden self-service unlock flow
  • fix(auth): localize invalid credential errors
  • fix(auth): redirect successful role auth
  • fix(auth): return canonical rate-limit errors
  • fix(auth): route oauth provider checks through api client
  • fix(copy): remove mvp production copy
  • fix(copy): remove mvp production copy
  • fix(deploy): automate production tls certificates
  • fix(deploy): harden api ecs deployment
  • fix(deploy): harden web ecs deployment
  • fix(e2e): make legal support locale deterministic
  • fix(infra): adapt stack for af-south-1 deployment
  • fix(mobile): add employer worker profile detail
  • fix(mobile): align expo sdk dependencies
  • fix(mobile): enforce launch copy guardrails
  • fix(mobile): handle paystack callback checkout
  • fix(mobile): harden push registration helpers
  • fix(mobile): isolate Expo Router runtime React resolution
  • fix(mobile): limit Metro workspace watches
  • fix(mobile): preserve worker registration role
  • fix(mobile): refresh verified booking payment state
  • fix(mobile): show outstanding payment summary
  • fix(mobile): surface auth lockout errors
  • fix(node-api): handle outbox retry collisions
  • fix(ops): align acceptance env with .env.example
  • fix(ops): pin mailhog image tag
  • fix(payments): address pending ledger release review feedback
  • fix(shared): complete api error code guard coverage
  • fix(types): require unlock contact identifier
  • fix(web-mobile): align outstanding payment state
  • fix(web-mobile): lazy load extra payment details
  • fix(web-mobile): share dispute list queries
  • fix(web): add webhook status resource copy
  • fix(web): align admin list query keys
  • fix(web): align admin payment afrikaans copy
  • fix(web): derive footer legal links from registry
  • fix(web): harden admin timeline rendering
  • fix(web): hide duplicate country creation
  • fix(web): localize admin webhook replay errors
  • fix(web): localize admin webhook replay errors
  • fix(web): require payout batch confirmation
  • fix(web): route local api calls to backend origin
  • fix(web): sync locale cookie before switching languages
  • fix(web): tighten localized seo indexing
  • fix(worker): return updated worker profile

Verbeter

  • refactor(api,locales): wire ConfirmUnlockResponse + OUTBOX_ENTRY_NOT_FOUND
  • refactor(api): collapse ledger migration chain to zero-legacy schema
  • refactor(api): collapse payment-refund-columns zero-churn migration
  • refactor(api): consume shared admin webhook + push device contracts
  • refactor(api): support inline FCM/APNs credentials for ECS
  • refactor(api): support inline FCM/APNs credentials for ECS
  • refactor(shared): clarify endpoint parameter names

Verander

  • build(mobile): exclude backend from eas archive

Verander

  • chore: bootstrap Sizoro monorepo scaffold
  • chore: enable next eslint plugin
  • chore: merge PR #10 Paystack verification hardening
  • chore: merge PR #11 production env and CORS
  • chore: merge PR #14 auth throttle lockout
  • chore: merge PR #14 shared package bump
  • chore: merge PR #18 api production deploy
  • chore: merge PR #19 web production deploy
  • chore: merge PR #9 observability runbooks
  • chore: merge PR 21 admin audit controls
  • chore: merge shared package publish updates
  • chore: remove test github actions
  • chore: removes temporary folder from git tracker
  • chore: save production readiness validation fixes
  • chore: update husky hooks
  • chore(api): record refresh token families merge
  • chore(deploy): add api dockerfile and aws ecs production deploy workflow
  • chore(deploy): add web production deploy workflow and sentry source-map upload
  • chore(deps-dev): bump @commitlint/cli from 20.5.3 to 21.0.0
  • chore(deps): align shared packages to 0.2.40
  • chore(deps): bump @nestjs/jwt from 10.2.0 to 11.0.2
  • chore(deps): bump @sentry/nextjs from 8.55.2 to 10.52.0
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): bump shared packages [skip ci]
  • chore(deps): refresh lockfile for commitlint 21
  • chore(deps): sync shared packages to 0.2.34 [skip ci]
  • chore(git): add production quality hooks
  • chore(git): add production quality hooks
  • chore(mobile): enable eas development builds
  • chore(ops): add production-like local acceptance stack with postgres redis mailhog
  • chore(shared): group outbox error codes

Verander

  • "Update Claude Code Review workflow"
  • "Update Claude PR Assistant workflow"
Veranderingslog | Sizoro