diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..ae2e5b0
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,63 @@
+# Changelog
+
+All notable changes to Coastal Timesheet will be documented in this file.
+
+## [2.1.0] - 2026-02-15
+
+### Added
+
+- **Copy Previous Week** — One-tap button to duplicate last week's entries into the current week. Shifts dates automatically, skips deactivated homeowners. Shows on empty weeks only.
+- **Bulk Approve / Reject** — Admin Reviews tab now supports multi-select with "Select All" checkbox and bulk action buttons. Process 40+ timesheets in one click instead of one-by-one.
+- **Overtime Tracking** — New admin "Overtime" tab with per-employee weekly breakdown, total/regular/OT summary cards, and date range filtering. Employee timesheet page shows real-time amber warning banner when hours exceed 40h/week (FLSA threshold).
+- **Homeowner Filter on Reports** — Admin Reports tab now includes a homeowner dropdown filter to see all time logged at a specific property.
+- **Homeowner Address Field** — Homeowners now have a separate address field. House numbers split from names into dedicated address column.
+- **Homeowner Edit/Search** — Full inline editing for homeowner name and address, search bar, toggle active/inactive with "Show inactive" filter.
+- **Employee Edit/Delete** — Admin Users tab now has role dropdown (employee/admin), deactivate button (soft-delete preserving history), and reactivate option.
+- **Reopen Timesheet** — `PUT /api/admin/timesheets/:id/reopen` endpoint allows admins to unlock approved/rejected timesheets for corrections.
+- **Timesheet History** — `GET /api/timesheets/history` endpoint returns all user timesheets for the History page.
+- **Public Homeowners API** — `GET /api/homeowners` endpoint for authenticated users (used by timesheet entry form).
+
+### Fixed
+
+- **Timezone bug** — `new Date("YYYY-MM-DD")` parsed as UTC, causing wrong day names in US timezones. All date parsing now uses local time.
+- **CORS policy violation** — Added Tailscale IP to allowed CORS origins.
+- **Approve button 400 error** — Frontend now sends `{}` body on approve (validation required an object).
+- **PDF download silent failure** — Frontend was using `timesheet.id` but API returns `timesheetId`. Fixed field mapping.
+- **Auto-save errors on incomplete entries** — Auto-save now only fires when all required fields (homeowner, hours, description) are filled. Incomplete entries show amber border indicator.
+- **History page crash** — `.map is not a function` when API returned object instead of array. Added dedicated history endpoint.
+- **Rate limit too aggressive** — Auth endpoint bumped from 5 to 50 attempts per 15 min for development.
+
+### API Endpoints Added
+
+| Method | Endpoint | Description |
+|--------|----------|-------------|
+| POST | `/api/entries/copy-week` | Copy entries from one week to another |
+| POST | `/api/admin/timesheets/bulk-approve` | Approve multiple timesheets |
+| POST | `/api/admin/timesheets/bulk-reject` | Reject multiple timesheets |
+| GET | `/api/admin/overtime` | Overtime report with filters |
+| GET | `/api/timesheets/overtime` | Employee's own overtime for a week |
+| PUT | `/api/admin/timesheets/:id/reopen` | Reopen locked timesheet |
+| DELETE | `/api/admin/users/:id` | Deactivate employee (soft-delete) |
+| GET | `/api/timesheets/history` | All user timesheets |
+| GET | `/api/homeowners` | Public homeowner list |
+
+## [2.0.0] - 2026-02-15
+
+### Added
+
+- Complete rewrite from static HTML to production-grade stack
+- React 18 + Vite + Tailwind CSS (mobile-first design)
+- Express + Prisma + PostgreSQL backend
+- JWT authentication with role-based access (employee, admin, super_admin)
+- Weekly Mon–Sun timesheets with auto-save (800ms debounce)
+- Multiple homeowner entries per day
+- Submit → Approve/Reject workflow
+- Server-side PDF generation (@react-pdf/renderer)
+- SMTP email integration with branded HTML templates
+- Admin panel with employee/homeowner management
+- Reporting with employee, status, and date range filters
+- Dark mode (system-aware + manual toggle)
+- Docker Compose single-command deployment
+- Non-root containers, Helmet security headers, bcrypt, Zod validation
+- Rate limiting on auth endpoints
+- 46 homeowners seeded from v1 data
diff --git a/README.md b/README.md
index 43ee03b..b494f8b 100644
--- a/README.md
+++ b/README.md
@@ -25,11 +25,15 @@
- **🔐 JWT authentication** — Secure login with access/refresh tokens + rate limiting
- **📅 Weekly timesheets** — Monday–Sunday pay period with auto-save
- **🏠 Multiple homeowners per day** — Track work at different job sites
+- **📋 Copy Previous Week** — One tap to duplicate last week's entries as a template
- **✅ Submit → Approve workflow** — Employees submit, admins approve or reject
+- **⚡ Bulk Approve/Reject** — Select all + approve 40 timesheets in one click
+- **⏱️ Overtime Tracking** — Real-time OT warnings for employees, admin reports with per-employee weekly breakdown
- **📄 PDF generation** — Professional server-side PDF export
- **📧 Email integration** — Send timesheets via email with SMTP
- **👥 Admin panel** — Manage employees, homeowners, review timesheets
-- **📊 Reporting** — Filter by employee, date range, status with summary stats
+- **📊 Reporting** — Filter by employee, homeowner, date range, status
+- **🏡 Homeowner management** — Add, edit, search, activate/deactivate with address fields
- **🌙 Dark mode** — System-aware with manual toggle
- **🐳 One-command deploy** — Single `docker compose up` for the entire stack
@@ -40,26 +44,39 @@