Appearance
Changelog
v1.0 — Initial release
Platform (Sprint 1–3)
Core calculator
- NGER Method 1 fuel-based emission calculator
- Transport modes: Road, Rail, Aviation, Sea
- 13 vehicle classes across all modes with NGER Schedule 1 factors
- Scope 1 (CO₂ + CH₄ + N₂O) and Scope 3 (upstream) outputs
- Reporting year attribution by departure/arrival date
CSV import
- Bulk job upload via CSV
- Per-row validation with error reporting
- Idempotency via
reference_number
API
POST /jobs— submit jobs and receive emission resultsGET /clients— list organisation clientsGET /emission-factor-types— list available transport modes and fuel types (public)- SHA-256 API key hashing — keys stored as hashes, shown plaintext once
- Rate limiting: 1,000 requests per rolling hour per key
- Idempotency: duplicate
reference_numberreturns original result without creating a duplicate
Analytics dashboard
- Emissions by reporting period, transport mode, and client
- Recharts-based visualisations
User management
- Invite-only onboarding via email
- Roles: superuser, org_admin, org_member, client_admin, client_member
- Organisation and client scoping via Supabase RLS
NGER reports
- Report generation with immutable snapshots
- Grouped by client and reporting year
Post-sprint fixes
Vehicle classification overhaul
- Replaced 10 generic vehicle class codes with 14 NGER-accurate codes matching Schedule 1 of the NGER Measurement Determination
- Added Division 4.1 / 4.2 / 4.3 structure for road transport
- Euro standard differentiation for heavy vehicles (Euro I, Euro III, Euro IV+)
- Fleet guidance tooltip in UI: "Most modern Australian heavy vehicles (post-2006) qualify as Euro IV or higher"
- Electric locomotive flagged as Scope 2 only with UI warning
Emission factors corrected to NGER Schedule 1 values
- Diesel CO₂ factor updated to 69.9 kg CO₂-e/GJ (was 69.7)
- Euro IV+ CH₄ factor set to 0.07 (not the same as Euro III 0.10)
- Factors seeded for reporting years 2023–2026
- Database check constraint enforces
combined_factor = co2 + ch4 + n2o
API Keys page — superuser context switcher
- Superuser with no active org context sees all API keys across all organisations with an Organisation column
- Superuser with active org context sees keys filtered to that organisation
- Create button disabled with amber warning if no org context is selected
- Creation form shows org confirmation banner ("This API key will be created for: X")
API keys RLS fix (migration 20260610000200)
- Fixed
42501INSERT violation for superusers caused by two permissive policies ANDing theirWITH CHECKexpressions - Replaced generic
api_keys_org_accesspolicy with role-exclusiveapi_keys_superuserandapi_keys_org_memberspolicies
Superuser profile fix (migration 20260610000300)
- Superuser
dev@emwise.com.aunow hasorganization_id = NULLso the context switcher (not the profile) controls which org they act within - Fixed Clients page and Users page being empty for superusers with a null org
Clients page and Users page context switcher
- Both pages now respect the superuser active org context
- Superuser with no context: sees all records; Add Client button disabled with amber warning
- Superuser with context: sees org-scoped records; can create
Password reset flow
- Fixed 404 on
/auth/update-password— addedvercel.jsonSPA rewrite rule - Fixed
SIGNED_OUTevent inAuthContextredirecting users away from the update-password page beforePASSWORD_RECOVERYfired UpdatePasswordpage now waits for thePASSWORD_RECOVERYevent before rendering the form- Shows spinner while waiting, expired-link card with "Request new link" button if token does not arrive within 5 seconds
Demo client
- Vehicle class codes updated to match NGER schema
articulated_truck→heavy_vehicle_euro4rigid_truck→heavy_vehicle_euro4light_commercial_vehicle→light_vehicle_post2004_dieselpassenger_vehicle→light_vehicle_post2004_petrol