Change Log
All notable changes to Nucleus are documented here, grouped by date.
2026-03-06
Section titled “2026-03-06”Improvement
Section titled “Improvement”- Infrastructure: Complete rebrand from DotCollective Tools to Nucleus with new domain (nucleus.fast), dedicated Cloudflare account, and fresh D1/R2 resources
Feature
Section titled “Feature”- People — Data Model: People-centric data model — employee fields (employment, contact, demographics, financial) now stored on
peopletable instead ofuserstable, enabling Xero sync for people without app accounts. Profile endpoint and insights queries read frompeople. Theuserstable is now auth-only - Database: Added
person_idcolumns to 8 employee data tables (pay_summaries, payslips, leave_balances, leave_requests, scorecards, onboarding_progress, reviews, feedback_requests) with backfill migration and indexes for people-centric data model Phase 2 - Auth Middleware: Resolves
personIdfrom authenticated user’s linked people record on every request - API Routes: Implemented dual-write pattern (writing both
user_idandperson_id) across pays, leave, scorecards, onboarding, and performance routes - Database: Eliminated
user_external_idsdependency — all external ID lookups (Xero, Productive) now read directly frompeopletable columns (xero_employee_id,productive_id) - API Routes: Removed dual-writes to
user_external_idsfrom Xero linking, Productive sync, and payroll sync. Admin mappings endpoint now reads/writespeopletable directly - Admin UI: External ID mappings table now shows all people (not just app users) and writes directly to
peopletable - Data Scoping: Added
getScopedPersonIds()usingpeople.manager_idhierarchy. All route scoping (scorecards, onboarding, leave, performance) now usesperson_idinstead ofuser_id— managers see direct reports via the people hierarchy rather than squad membership - Database — Phase 5 Cleanup: Dropped
user_external_idstable and deletedgetScopedUserIds(). Migrated allWHERE user_iddata queries toWHERE person_idacross performance, onboarding, and leave routes. Removeduser_idfrom INSERT statements in reviews, scorecards, onboarding_progress, and leave_requests. Leave approval now usespeople.manager_idhierarchy for manager verification instead ofsquad_members. Added partial unique indexes onperson_idfor ON CONFLICT migration. Removed backward-compat users table write from Xero payroll sync - Database — Phase 6 Pay/Leave/Feedback: Migrated
pay_summaries,payslips, andleave_balancesreads fromuser_idtoperson_idwith backfill migration. Replacedsquad_membersin insights (span of control, manager count, team sizes) and performance (feedback peer selection) withpeople.manager_idhierarchy. Scorecards squad filter usespeople.squadcolumn. People profile pay/leave lookups useperson_iddirectly - Database — Phase 7 Final Cleanup: Recreated 8 data tables to drop
user_idcolumns entirely —person_idis now the sole entity reference withNOT NULLconstraint andON DELETE CASCADE. Changedpay_summariesprimary key fromuser_idtoperson_id. Droppedsquad_memberstable — squad membership now derived frompeople.squadcolumn. Admin squad management and squad filter routes rewritten to usepeople.squadandpeople.manager_idhierarchy. Removedsubject_idfromfeedback_requests(usessubject_person_idonly). Cleaned up all staleuser_idindexes
2026-03-05
Section titled “2026-03-05”Feature
Section titled “Feature”- People Profile Page: Full-page profile replacing the details drawer in directory view. Four tabs — Details (Contact, Role, Personal, System), Employment (Tenure, Pay, Leave, Financial), Documents, Activity. Navigates via
/people?id=personIdwith back button. Permission-scoped tabs hide sensitive data from lower access levels - People Peek Sheet: Simplified quick-peek drawer for org chart view showing Contact and System info, Activity tab, and footer with Close / View Profile buttons
- Xero Sync on Profiles: Xero link/sync controls on person profile System card (executive only). Smart name/email matching auto-links when a single high-confidence match is found, or shows a picker dialog for multiple candidates. Sync button triggers Xero payroll data refresh for the individual
- Super Fund Type: Added
super_fund_typecolumn (Regulated / Self-Managed) synced from Xero SuperFunds API. Displayed in Financial card for executives - Insights & Reporting: Workforce analytics dashboard with single-page layout — KPI summary row (headcount, turnover, salary, age, span of control, locations) and six expandable sections (Headcount, Retention, Diversity, Compensation, Org Structure, Location) with Recharts visualisations. Date range and location filters. Lazy-loaded section data
- Users — Employee Fields: Added employment fields (
start_date,end_date,employment_status,location,gender,date_of_birth,employment_basis), contact fields (phone,mobile,personal_email,home_address), and financial fields (super_fund_name,super_fund_type,super_member_number,bank_account_name,bank_bsb,bank_account_number) to users table - Xero Sync — Employee Data: Extended Xero Payroll sync to populate employee demographic, contact, and financial fields from the Xero Employee API during payroll refresh. Super fund name and type resolved via separate SuperFunds endpoint
- Performance Dashboard: Review progress stepper showing workflow stages (Open → Self Assessment → Peer Feedback → Review → Closed) when an active review exists, or cycle calendar (Q1 → Q2 → Q3 → Q4 → Annual) when no active review. Current goals card displays goals from the latest completed review. Performance trends chart shows KPI pass rate and goal completion rate across completed reviews
- Performance Tool: Full performance review system with review cycles (quarterly/annual), KPI ratings across 5 areas (Organisation, Performance, Communication, Self Development/Management, Automation), 3-tier rating scale (Needs Urgent Work/Achieving/Exceeding), automatic pass/fail computation on completion, self-assessment (strengths/growth areas), SMART goals editor, reviewer notes and action items, salary decisions (annual, exec/head only), 360 feedback with structured peer selection, anonymized feedback summaries (min 3 responses), feedback submission form, review templates with mandatory KPI tracking, dashboard alerts card, and sidebar badge for pending feedback
- Review Templates: Three seeded KPI templates (Agency Employee with 10 KPIs, Retail Employee with 9 KPIs, Lead/Manager with 10 KPIs) including new Automation area for AI adoption tracking
Improvement
Section titled “Improvement”- Performance Cycles: Cycle details drawer with Details and Activity tabs — Activity tab lists all reviews in the cycle with subject name, reviewer, and status. Closed cycles show a read-only view with an eye icon
- Performance Tool: Review detail view now scopes section visibility by role and status — employees during self-assessment only see Self Assessment and Goals sections. Added “Request 360 Feedback” button to the review workflow card for managers to invite peers. Page title now correctly shows “Performance” in the top bar. Goals use 3-column layout for compact editing
- Performance Tool — Review History: Previous KPI ratings shown inline as badges, previous goals with completed/missed toggles, previous 360 feedback summary, and collapsible previous reviewer notes. Annual reviews aggregate all quarterly reviews with per-KPI rating distribution and pre-filled ratings. Goal completion status tracked across cycles via new
statuscolumn onreview_goals - Performance Tool — Self Assessment: Added Discussion Topics field for employees to flag topics they’d like to cover in their review meeting. Editable during self-assessment, read-only for reviewers
- Performance Tool — Review Workflow: Added
ready_for_reviewstatus between feedback collection and completion. Flow is now: Draft → Self Assessment → Awaiting Feedback → Awaiting Review → Completed. Reviewers mark “Ready for Review” once 360 feedback is sufficient, then “Complete Review” after the meeting
2026-03-04
Section titled “2026-03-04”Feature
Section titled “Feature”- Documents Tool: Employee document storage with R2 file storage, D1 metadata, category-based organisation (employment agreements, super forms, visas, certificates, policies), expiry tracking with visual warnings, hierarchical access scoping, inline viewing, and upload/download/delete operations
- Documents Tab: Documents tab integrated into the People detail drawer for quick access to a person’s documents
- Activity Summary — Slack: AI-powered daily Slack activity digests for the People tool
- Activity Summary — Multi-source: Calendar, Productive, and GitHub activity aggregation alongside Slack
- Person Detail Drawer: Pay history, leave balances, and automatic salary increase detection in People
- Hierarchical Data Scoping: Restrict sensitive People tabs (pay, leave, activity) to the viewer’s organisational subtree for head-level users
2026-03-03
Section titled “2026-03-03”Feature
Section titled “Feature”- Holidays Tool: Australian public holidays with per-state filtering and timezone settings
- People Tool: Sync people from Google Workspace and interactive org chart with React Flow
Bugfix
Section titled “Bugfix”- Build Pipeline: Generate TanStack Router route tree before TypeScript compilation to fix build failures
2026-03-02
Section titled “2026-03-02”Feature
Section titled “Feature”- Initial Platform: App shell, sidebar navigation, dashboard, Cloudflare Access authentication, RBAC permission system, and admin section (users, squads, permissions)
- Onboarding Tool: Checklist-based employee onboarding with template management
- Objectives Tool: OKR tracking with scorecard types, URL-persisted state, progress charts, and dashboard alerts
- Scorecards Tool: Squad-based filtering and squad assignment on users
- Announcements Tool: Rich text announcements with read tracking, category filtering, and distribution to Slack, Google Calendar, and email
- Rich Text Editor: Tiptap-based editor with image upload to Cloudflare R2 and emoji picker
- Calendar Tool: Google Calendar integration for viewing team events
- Leave Management Tool: Leave requests with Xero integration, multi-step approval workflow, and post-approval sync to Xero, Productive, Google Calendar, and Slack
- Connections Admin: Admin UI for managing third-party service connections (Xero, Productive, Google, Slack)
- Pays Tool: Xero payroll integration for viewing pay history
- Employment Section: Grouped Calendar, Leave, and Pays under a single Employment sidebar section
- Template Management: Replaced static job roles with configurable onboarding/scorecard templates with locked common items
- Profile Page: User profile with name editing, Google avatar sync, and capitalised display names
- Dev User Picker: Local development user switcher for testing different roles and permissions
- Multi-Theme System: 8 colour themes with dark mode support
- Favicons & PWA: App icons, dark browser chrome, and mobile web app metadata
- Configurable Template Permissions: Granular access control for the templates section
Bugfix
Section titled “Bugfix”- Auth Cookie Support: Read Cloudflare Access JWT from
CF_Authorizationcookie in addition to the header - Sign-In Flow: Show sign-in button with Cloudflare Access redirect on authentication failure
- User Name Preservation: Auth middleware preserves user-set names — only sets name on first login
- Google Profile Picture: Extract avatar from OIDC
pictureclaim via/cdn-cgi/access/get-identity - Users Table Layout: Move Squad column after Access Level for better readability
- Sidebar Organisation: Move Templates back under Administration section
- Approval Visibility: Fix pending leave approval visibility for executive and head roles, clear cache on user switch
- Integration Reliability: Assorted bugfixes for third-party integrations and dev tooling
- UI Polish: Detail view refinements, neo theme support, and scorecard filtering improvements
Improvement
Section titled “Improvement”- Auth & Dev Docs: Updated authentication, local development, and API documentation to reflect current behaviour
- Leave & Connections Docs: Added leave tool, leave API, connections API, and database schema documentation
- Agent Instructions: Added GitHub issue quality standard and
--assignee @merequirement to CLAUDE.md
2026-03-01
Section titled “2026-03-01”Initial
Section titled “Initial”- Repository Created: Initial commit with project scaffolding, Cloudflare Workers configuration, and documentation site setup