Bug Fixes
Server actions previously returned numeric error codes (like "3002") to the frontend, hiding the real error message from users. Now they surface the actual error message — so when an operation fails, you see "Cannot copy a client-approved estimate" instead of a code.
The fix also includes estimate-page polish: locked estimates now show a disabled "Locked: client approved" item in the actions menu, and removed duplicate approval status rows from the timeline for a cleaner flow.