v1.0.12
Onboarding & Offboarding Documents
A focused release on the document side of the onboarding/offboarding lifecycle. Templates can now be scoped to multiple departments at once; per-user copies of onboarding documents are generated from a single canonical template (closing a long-standing signature edge case where multiple new hires could overwrite each other's signature on the same file); read-only documents (employee handbook, code of conduct, exit-policy reads) automatically mark the linked task complete the moment they're read; and the global sidebar gains an amber "Action Required" badge so employees see at a glance how many docs they still owe.
New Features — Document Templates
- Multi-department scope — A template can now be scoped to multiple departments at once instead of just one. Existing single-department templates were migrated automatically, so every previously scoped template kept its scoping intact. Department heads see a template if any linked department is theirs; administrators and executives see all.
- Edit department scope from the template list —
/documents/templatesrows now have a settings-cog menu next to the rename action that opens an Edit Template modal. Name and multi-select department scope live in one form. Department heads are locked to their own department in the picker, and the server re-validates on save so a tampered request can't escalate. Department updates are applied atomically — an interrupted save can't leave a template half-scoped. - Pill-segmented Active / Archived tabs — The Active and Archived rails on the templates page were redesigned as a pill-segmented control matching the audit-logs styling (constrained width, rounded selection background) instead of the old underline tabs.
- Archive and restore — Templates can now be archived (hidden from the active picker without deleting the row) and restored. Archive preserves the template's history — the docs already generated from it are unaffected.
- Multi-select department picker on create —
/documents/templates/createreplaces the single department dropdown with a multi-select checkbox grid. Department heads see only their own department in the picker. - Templates redirect renders cleanly for employees — Employees who land on
/documents/templatesare now redirected to/documentscleanly, replacing the previous redirect that left a blank white screen until the user manually refreshed.
New Features — Per-User Document Generation
- Per-employee copy of every onboarding document — When an onboarding or offboarding task with a doc attachment first surfaces for an employee, the system now reads the canonical template and creates a per-employee copy. This closes a quiet edge case where the same Document file was being signed in place by multiple new hires — subsequent signers could overwrite the first signature, and there was only ever one shared audit trail. Per-employee copies give every recipient their own audit trail, signature record, and signing certificate.
- Read-only mode for informational templates — Templates with no required signers generate as a read-only document in the employee's drawer that doesn't require any signing flow to surface. The employee just sees the document in their files. Repeat generation is a no-op.
- Backfill for existing organizations — Existing organizations have a one-time migration that walks every onboarding task with a legacy attached document, derives a template from it, and re-points the task at the new template. Safe to re-run on rows already migrated.
New Features — Onboarding/Offboarding Workflow
- Instance delete returns immediately — Removing an onboarding or offboarding instance from a user's profile previously appeared to "come back for 30 seconds" — the row stayed visible until the email notification finished sending to all recipients. The delete now returns the moment the row is gone; the email is dispatched in the background. Refreshes during the email-send window now show the deletion correctly.
- Standalone /onboarding page retired — Templates and per-user instances were both surfaced from
/onboarding, duplicating UX that already lived on each employee's profile (Onboarding / Offboarding tabs). The standalone page is now a thin redirect to/users; the Guided Tours setting was updated to match./settings/onboardingabsorbs the template management UI for administrators. - Default assignee resolved per-instance — Onboarding template tasks with no explicit assignee previously resolved a default per-task at create time, which could bounce unassigned tasks across multiple administrators on the same instance. The default is now resolved once per instance creation, so all unassigned tasks for that import land on the same administrator — easier to track and matches what an administrator expects when they kick off a new hire.
New Features — Read-Only Document Acknowledgment
- "I have read & acknowledge" button on read-only docs — Read-only onboarding/offboarding documents (employee handbook, code of conduct, exit policy, return-of-equipment acknowledgment) now have a footer button in the document preview that explicitly records "I have read this". Clicking it marks the linked onboarding task complete with a real timestamp + audit row, fires the standard task-completed notifications, and rolls the parent instance status forward (Not Started → In Progress → Completed). Only the document owner can click — administrators and department heads keep their existing path for marking tasks complete on someone else's behalf.
- Implicit acknowledgment on view — Opening a read-only doc whose linked task is still pending also fires the same acknowledgment quietly in the background. Both paths are recorded distinctly in the audit log (
ACKNOWLEDGEvsACKNOWLEDGE_ON_VIEW) so explicit and implicit signals stay distinguishable. Document views are already audit-logged with IP and user-agent, so the implicit path retains enough trail to defend in a compliance dispute. - Identical behavior for offboarding — The same flow closes return-of-equipment and exit-policy reads when a leaving employee opens the doc, not just onboarding handbooks. Notifications correctly say "Offboarding" vs "Onboarding".
- Self-heal on the documents page — When an employee opens
/documentsbefore visiting their onboarding tab, any per-employee copies of onboarding documents that haven't been generated yet are now generated lazily on the list request. Previously employees only saw their read-only onboarding doc after signing the sibling signature-required document, because the page reload happened to trigger the generation through a different code path. - Document list stays in sync after deletes and acknowledgments — Browser caching for the documents list was loosened so deletions and acknowledgments show up immediately instead of requiring a hard refresh. Server-side caching still handles the speedup.
New Features — Action Required Sidebar Badge
- Amber count badge on Action Required — The global app sidebar's "Action Required" entry now shows an amber pill with the user's outstanding count: pending signature requests + overdue signatures + pending read-only acknowledgments. Hidden when zero. When the sidebar is collapsed, the badge becomes a small amber dot in the corner of the icon so the signal survives the narrow rail.
- Refreshes without a full page reload — The badge count refreshes on first sign-in, on every navigation into
/documentsor/dashboard, and inline after any acknowledgment in the documents page itself — so the count never lags behind reality.
Bug Fixes
- Document deletes didn't drop out of
?view=byEmployeeuntil refresh — Deleting a document from the by-employee drawer view appeared to do nothing until the user manually refreshed. Fixed. - Onboarding instance "came back for 30 seconds" after delete — See "Instance delete returns immediately" above; root cause was the delete waiting on email send before responding.
- Read-only doc only appeared after signing a sibling — Per-employee generation for onboarding read-only docs only fired when the employee opened the onboarding tab. If they hit
/documentsfirst, their read-only doc was missing until the page reload after signing happened to trigger generation through a different code path. Fixed via the self-heal described above. - Templates page redirected employees to a white screen — Logging in as an employee and visiting
/documents/templatesredirected to/documentsbut rendered a blank page until manual refresh. Fixed. - "New Template" button on /documents/templates was silently no-op — Clicking "New Template" did nothing for some users. Fixed.