Changelog
Everything we ship, release by release. New integrations, HR and timesheet improvements, automation upgrades, and fixes.
v2.5
Β· 81 updatesTasks
- Alerts for team notes that name nobody β When a contractor or employee leaves a note without naming anyone, it now lands in a "Notes to review" list for their manager (or the workspace owners if no manager is listed), with a count badge and a once-a-day round-up email.
- Assign customers to contractors and employees β Assign one or more customers to a person on their profile. They see and can work on every ticket for those customers β including new ones arriving from Atarim, email or other integrations β without being assigned each task individually.
- Automatic due dates on new tasks β Tasks created from email, text messages or by hand now get a due date from your workspace turnaround setting (2 working days by default, with per-source overrides). Tasks with no due date sat under "No date" in Google Tasks and never appeared on the calendar.
- Calendar no longer shows duplicate task entries
- Cloning a task works from the task list β Cloning failed with an "Invalid uuid" error for tasks that came from Google Tasks.
- Deleting a task now removes its calendar entries too β Calendar entries created from older tasks and from subtasks were left behind on the calendar when the task was deleted; they are now removed as well.
- Emails pick the right customer automatically β When an email from a known customer contact (or their email domain) becomes a task, that customer is now selected for you.
- Fill in missing due dates from when a task arrived β Old tasks with no due date never showed up on a date in Google.
- Finished checklist items now move to the bottom of the subtask list
- Generate with AI can read a Google Doc, Sheet or Slides file by link β Teams keep source material in Google Drive; pasting a link avoids downloading and re-uploading files.
- Google Doc comments recorded on tasks β Comments and edits made inside a Google Doc, Sheet or Slides file attached to a task are copied into the task comment history automatically, so nothing is lost when Google notification emails do not arrive. Each workspace chooses how much to record under Settings, Tasks.
- Google document edits now show what changed β Task entries list the added and removed lines from an edited Google Doc, Sheet or Slides file instead of only saying it was edited.
- Google Drive activity reaches tasks faster and never misses a file β Linked Google Docs, Sheets, Slides and folders are now checked every 10 minutes instead of hourly, any linked file that was not being tracked is picked up automatically, and a "Check Google now" button on the task pulls in new comments and edits immediately.
- Google spreadsheet links in task comments now open correctly β Recorded activity from an attached Google Sheet linked to a Docs URL and showed a "does not exist" error; the links now open the right file.
- Invited teammates can create their own account from the invite link β An invitation now offers "Create my account" with the invited email pre-filled, then finishes joining and lands the person on their task list.
- Linked Google folders report new files on the task β When a Google Drive folder is linked to a task, any file or subfolder added to that folder is posted into the task comment history automatically, alongside the existing document comment tracking.
- Merge look-alike tasks from the task page β Duplicate copies of the same meeting or job can be folded into one task, keeping its checklist, comments, files and time.
- Personal default destination for new tasks β Each person can pick their own default (Google Tasks, Calendar, or both) for new tasks, or follow the workspace-wide setting.
- Reason when finishing a task is now a workspace setting β Asking for a short reason when a task is finished or reopened stays on by default, and owners or managers can switch it off in Settings β Tasks so tasks finish in one click.
- Sections can be kept in Conopeum only β Lists like SAAS or RFPs do not need dates. Switch a section to Conopeum only and its tasks get no automatic due date, never show on a calendar, and are never copied to Google Tasks. Turning it on also removes anything already sent over.
- Sections can be turned off per workspace β Workspaces that do not organise work into sections can now switch sections off in Task settings. Section labels, filters, pickers and the sections list disappear, and nothing is deleted so the switch is reversible.
- Show linked task name on emails β Email list and reader now display the title of the task an email is linked to, and the reader badge links straight to that task.
- Simpler task view for contractors and employees β Restricted members now see only My Tasks and Waiting, with no section tabs and no assignee or created-by filters, so their list stays focused on their own work.
- Task dates can follow the last checklist date β Optional per-workspace rule: a task date moves out to the latest date on its checklist items, with a one-click apply for existing tasks.
- Task list dates now match the task page β The date shown on each row in the task list now comes from the task itself, so it can no longer disagree with the date you see when you open the task.
- Tasks put on Google Calendar on purpose stay there β A workspace set to "Google Tasks" was wiping calendar entries for tasks people deliberately placed on their calendar.
- Tasks stay off the calendar when a workspace chooses Google Tasks only β Tasks and checklist items no longer create calendar entries, and mapped ones are cleared, when the workspace destination is Google Tasks.
- Turn any task comment into a subtask β Every comment now has a subtask action that opens an editable title pre-filled from the comment (links stripped) and creates a subtask on that task, marking the comment as converted.
- Use sections switch moved to Settings β The switch for turning sections on or off now sits at the top of the sections area in Settings, next to the rest of the section setup.
- Viewing as another member no longer errors on the task page β Google mail, calendar and Drive stay hidden while viewing as a teammate; the task page now shows Conopeum tasks with a short note instead of a technical error.
Automations
- Fix stray dates in exact-date scheduling β Specific-date automations now use a click-to-toggle calendar, so browsing months no longer adds unintended dates.
- Monthly Nth-weekday schedules can shift by a set number of days β Lets you target a named date like the 2nd Sunday and send a fixed number of days before or after it (e.g. the Thursday 3 days prior) without the semi-monthly workaround.
- Plain-English twice-a-month automation scheduling β Semi-monthly schedules were shown as "Monthly (day ?)" and configured through a raw comma list.
- Send limits only count delivered emails β An automation set to stop after N sends no longer switches itself off early when an attempt fails or has no recipients.
Time Off
- Approvals always record the balance deduction
- Time off balances repair themselves β If a stored time-off balance ever drifts from the ledger, Conopeum recalculates it automatically β no manual "recompute" step.
Timesheets
- Timesheet PDF labels approved time off separately from worked hours β Printed timesheets showed PTO as regular tracked time; now PTO rows are labelled and totals split worked / paid time off / total.
Time Tracking
- Log time without a task β Contractors and non-admin members can save time entries with no task attached, and blocked saves now show a clear message instead of a database error.
Inbox & Email
- Long emails no longer cut off on tasks β Emails linked to a task used to be trimmed to 8,000 characters, so very long messages lost their ending. The full email is now kept and shown behind a Read more toggle on the task, and any email that was previously cut off automatically re-loads in full the next time it is viewed or synced.
Notifications
- Auto-emails: specific dates and send limits β Some sends run on a handful of known dates, or should stop after a fixed number of messages.
- Per-automation email signature β Each scheduled auto-email can pick its signature: the "Send as" person's, a specific connected Google mailbox's, the workspace default, or none.
Dashboard
- No double-counting of submitted time off
Integrations
- Automatic due dates on new tasks β Tasks created from email, text messages or by hand could end up with no due date and disappear under "No date" in Google.
- Rebuild one Google task list at a time β Workspaces with several connected Google accounts had to rebuild every list at once.
Google
- Anything ticked off in Google Tasks now closes in Conopeum
- Assigned tasks land in each person's own Google task list β Tasks now copy into the Google task list of every person assigned, using the account they signed in with or chose as their default β never someone else's list.
- Calendar cleanup now clears subtask entries too β Switching a workspace to Google Tasks only now removes calendar entries created for subtasks, not just tasks.
- Calendar cleanup now finds subtask entries β Some calendar entries created from subtasks were left behind when clearing task entries.
- Checklist items appear in each assigned person's Google list β Anyone assigned to a checklist item now sees it in their own Google task list as "Parent β Item", kept in step when the item is renamed, re-dated, finished or removed.
- Checklist items get real dates too
- Choose the dates when checking for leftover calendar entries β When cleaning up leftover calendar entries you can now pick the time span to check: today and later only, the last 3 months, the last 12 months, this year, the last 3 years, or every year.
- Clean up calendar entries left by deleted tasks β Owners can scan connected calendars for entries from tasks deleted earlier (including old test tasks) and remove the ones they pick; new task calendar entries are tagged so future cleanups are exact.
- Clean up calendar entries when switching to Google Tasks only β Switching the default destination to Google Tasks now offers to remove the calendar entries created by earlier tasks; tasks and their Google Tasks copies stay untouched.
- Complete removal of task calendar entries β Ensure switching to Google Tasks only removes every calendar entry created from workspace tasks and subtasks.
- Completing a task in Google Tasks now completes it in Conopeum β Ticking off a task or checklist item inside Google Tasks now marks it complete in Conopeum automatically (within a few minutes, or instantly via the Refresh button), including copies in personal and shared lists.
- Confirm a possible email match with one click β If the Mail tab only guesses which task an email belongs to, you can now link it for real from the email itself.
- Due dates changed in Google Tasks now update in Conopeum
- Emails on tasks made in Google Tasks are linked automatically β A task created from an email in Google Tasks now shows that email and its history in Conopeum, instead of a "possible match" guess.
- Finished tasks stay on the calendar, marked done β Completing a task removed it from its calendar date, so the day's history disappeared.
- Google document edits post themselves, with a direct link β Text changes to attached Google files now appear on the task automatically within a couple of minutes, and each edit note includes an "Open in Google" link straight to the file.
- Google document links in task comments now open the file β The "Open in Google" link recorded with Google Doc, Sheet and Slides activity is now clickable in task comments and opens the correct file at the specific comment.
- Google-created tasks arrive assigned and in a section β Tasks made inside Google Tasks used to show up in Conopeum as unassigned with no section. They are now credited to the person who owns the connected Google account and filed under Unsorted.
- Per-mailbox email signatures β People with several linked Google accounts can now save a different signature for each mailbox; task emails use the signature of the address they are sent from.
- Pick which calendar or task list to clean up β When checking for leftover calendar entries or Google task items, you can now narrow the check to one connected Google account and one specific calendar or task list, instead of scanning everything.
- Read the linked email right on the task page β The email a task came from now shows inline in the task details and above the comment thread, with subject, sender, date and a Read email toggle for the full message.
- Repair Google task lists β Owners and managers can review leftover items in their Google task lists and rebuild the lists from their current Conopeum tasks.
- Restore task entries on Google Calendar β If task entries were deleted directly in Google Calendar, owners and managers can put them all back in one click from Settings β Integrations.
- Sections can have a shared Google task list β Each section can point at a connected Google account and task list, so everything filed there also shows up in one shared list.
- See the email a task came from on the task page β A new Email tab on the task page shows the linked email's subject, sender, date and body, so you can trace which email created the task.
- Tasks no longer appear twice on the same calendar β A task assigned to someone whose own calendar is also the shared calendar was added to that calendar twice.
- Updates never create a second copy of a task β Before sending a task to Google Tasks or a calendar, Conopeum now looks for a copy it already owns and updates that one instead of adding another. Stray extra calendar entries for the same task are cleaned up as they are found.
- Workspace calendars view β A Calendars page shows only the entries on your workspace's connected calendars, so you can fix a title, change a date, or remove an entry without leaving Conopeum.
Admin
- Automatic Lovable spend import β Lovable subscription and credit top-up receipts are imported automatically from the connected billing mailbox, with exact amounts, credit counts and per-credit pricing β no more manual entry.
Platform
- Accurate Lovable spend import β Imported receipts no longer duplicate charges already logged by hand, and plan payments no longer count as a single credit β so credit totals and average cost per credit read correctly.
- Backfilled release blog posts β Every past release (v1.0 through v2.2) now has a published, back-dated announcement post on the marketing blog.
- Release blog drafts β Cutting a release can now auto-draft an unpublished, benefit-led blog post about the biggest shipped items for review before publishing.
- Simpler view for contractors and employees β Limited-access members now land on their own task list with a short menu (My tasks, My time off, Settings) and a lighter header, instead of the full workspace dashboard.
Product
- Make it easier to see more than the last 25 emails when trying to create tasks from email.
Ai
- Turn an uploaded document or spreadsheet into tasks β In the AI tab you can now upload a PDF, Word file, spreadsheet or text file, have it read for you, and get either one task with subtasks or several separate tasks β reviewable before anything is created.
Hr
- HR review link restored for employees with HR access β Employees and contractors granted HR viewer access now see the HR review link in their menu and on their tasks page again.
- Manager timesheet digest email β Approvers now get an automatic timesheet summary once each timesheet period closes: the timesheets waiting on them, hours worked and approved time off per person, and who has not submitted yet. Owners pick the day and hour in Settings β HR, and workspaces on semi-monthly or monthly timesheets get one email per period instead of a weekly one.
v2.2
Β· 52 updatesTasks
- Atarim tickets get the default assignee β New tickets coming in from Atarim are now assigned to your workspace default assignee, so they land in that person's queue right away instead of arriving unassigned.
- Comment history per task and subtask β Long comment threads from Plutio, email and the portal were easy to lose track of.
- Email replies no longer duplicate in task comments β Syncing a task's email thread multiple times now skips replies that were already imported, so comments stay clean even with overlapping syncs.
- Email the original requester β You can now email a client from any task, not just email-sourced ones. Conopeum picks the best recipient automatically: the reporter's email captured from the integration, otherwise the linked customer's contact.
- Emailing a client from a task links the task to that email thread β Emailing a client from a task that did not start as an email now truly links that task to the email thread, so replies sync in and email actions work. The Mail tab no longer claims an email is linked when it just has a similar subject.
- Inbound tickets get a due date 2 working days out β New tickets synced from Atarim or ClickUp without a due date are now automatically due in 2 working days (weekends skipped).
- Multiple assignees per subtask with individual sign-off β Shared checklist items needed more than one owner, and each person needs to mark off just their own part.
- My tasks now includes tasks with subtasks assigned to me β Previously a task only appeared under Mine (or an assignee filter) when the parent task itself was assigned to you, hiding work where only a subtask was yours.
- New Atarim tickets land in the customer's default section β Incoming Atarim tickets now use the customer's Default section (falling back to the workspace default) instead of always landing in Unsorted.
- Per-person subtask sign-off on the Tasks list β Subtask rows on the main Tasks page now show every assignee as a clickable pill with per-person sign-off state, alongside the whole-subtask checkbox β no need to open the task to mark your part done.
- Personal default section for email β task β Each team member can now pick which section their email-created tasks land in, instead of everyone sharing the workspace default.
- Replies on task and subtask comments β Conversations were flat and split across tools.
- Searchable subtask assignee picker β Workspaces with large rosters had to scroll the whole people list to assign someone to a subtask.
- Splitting a subtask into its own task now prefixes the new title with the customer name β When promoting a subtask into a standalone task, the new task title now gets the [Customer] prefix, matching the behavior of creating a new task from a customer-assigned task.
- Syncing emails on a task created from an email no longer errors β A database conflict rule made the Sync emails action fail whenever new replies needed importing.
- Task emails support formatting and formatted paste β The email composer on a task now has bold, italic, underline, lists and links, and pasting an email or document keeps its basic formatting instead of flattening it into one block.
Timesheets
- Approved paid time off now appears on timesheets and is materialized at submission β Approved paid time off shows on the member's own timesheet day-by-day (pending requests appear as an advisory row) and counts toward the period total. When a timesheet is submitted, approved PTO days with no hours yet are written as real time entries so the approver sees the correct hours owed. Days already filled by a manager are skipped so nothing is double-counted.
- Reasons saved with manager time entries β Manager-entered time needed an audit trail.
- Your logged hours in My Tasks β Employees had to open the timesheet tab to see their own hours.
Time Tracking
- Clear message when time entry is blocked β Contractors logging time without a shared task now get a plain-language explanation instead of a raw database error.
Notifications
- Auto-emails can send from a person's connected Google mailbox β Scheduled/auto emails now have a "Send from a connected Google mailbox" option, so the message comes from a real person's address (and lands in their Sent folder) instead of the workspace system sender.
- Scheduled emails show the "Send as" person as the sender β Automated emails now display the selected person's name and route replies to their address instead of always looking like the generic notifications sender.
Dashboard
- Dashboard split into My work and Team management tabs β Single long dashboard was hard to scan; personal info now sits in My work with other workspaces on top, team/HR cards in a permission-gated tab
- My Work visible for owners and managers β Leaders only saw Team overview, so their own tasks and logged time card were hidden
Integrations
- Canva connect + Drive export fixes β Canva sign-in failures now show the real reason instead of a generic message, and Canva-to-Drive exports try every connected Google account before reporting the folder as missing.
- Canva connects reliably from custom domains and preview links β Canva sign-in now always uses one canonical callback address, so connecting or reconnecting from a custom domain (app.conopeum.com) or a preview link no longer fails with a redirect mismatch or a stuck pending state. The popup opens synchronously to beat popup blockers, and the expired-link page explains how to retry.
- Canva sign-in opens in a popup window β Connecting Canva no longer loads Canva inside the app (which caused "refused to connect"), and the expired-link message now explains how to retry.
- Comments sent to Plutio are labelled with context β Plutio attributed every pushed comment to the integration user, so you could not tell who was contacted or by whom.
- Configurable due-date offset for incoming tickets β Settings β Integrations now lets each workspace choose how many working days out incoming tickets are due when the source sends no due date, with optional per-integration overrides for Atarim, ClickUp and others. Defaults to 2 working days.
- Email β subtask extraction no longer repeats existing subtasks β Running AI subtask extraction on an email attached to an existing task re-proposed items the task already had. Proposals are now matched against the task's current subtask titles and filtered out both in the review list and at insert time.
- Emailβsubtask extraction now reports skipped duplicates β Duplicate action items were silently dropped, so it looked like AI missed them. The review dialog now shows how many were skipped, and a toast reports it when every item was already on the task.
- Instant Plutio comment sync β Comments used to wait for the 5-minute sync.
- Mark a Marky draft as deleted on the task β Marky pushes are one-way, so deleted drafts used to leave a dead link on the task. You can now flag the draft as deleted (and undo it); the Marky pill shows it struck through as "deleted".
- Pick which task attachments go to Marky β Choose exactly which image/video attachments are sent to MyMarky, and mark files so the correct version is used on future sends.
- Plutio auto-sync no longer fails when saving a task β Saving a task with Plutio connected hit a permission error while checking the workspace Plutio connection, silently skipping the automatic push.
- Plutio comment authors and tags β Imported comments lost who wrote them.
- Plutio comment import no longer stalls on large workspaces β New Plutio comments were silently not arriving in Conopeum.
- Plutio comment sync no longer errors β Comment sync from Plutio hit a non-existent updated_at column and errored out; the column reference is removed so comments flow through cleanly.
- Send Canva designs to Marky β Canva designs linked to a task are now sent to MyMarky alongside file attachments. They are exported as PNGs on the fly (nothing is saved to Drive) and honour the same attachment picker marks.
Platform
- Marketing page buttons now wrap long labels β Button text no longer overflows its button; the integrations directory uses a shorter "Learn more" call to action.
- Rework secondary nav (My work / Team management) + Open workspace in header β Make the top nav mirror the dashboard tabs and surface the Open workspace action in the header.
- Site verified with Google Search Console and sitemap submitted β Conopeum.com is now verified and its sitemap is submitted so new pages get indexed faster.
Hr
- Approved time off shows on timesheets β Approved paid time off now appears day-by-day on the member timesheet, is included in the period total, and is written onto the timesheet at submission so approvers see correct hours.
- HR viewers can use the Time grid β HR staff need to key in payroll hours for others without being made owners or managers.
- Meeting contacts no longer appear in timesheets β A meeting attendee auto-created from meeting ingest was showing up as a payroll row in the timesheet grid.
- My Work shows approved time off β Members see approved paid time off hours next to their tracked hours on the dashboard.
- Time grid saves when you click another cell β Typed hours in the HR time grid are no longer discarded when focus moves to the next cell.
- Timesheet "By teammate" shows real names β Workspace timesheets now resolve teammate names from the workspace roster, including manager-entered time for people without an account.
- Travel expense voucher PDF spans multiple pages β Long mileage vouchers now print across several sheets with repeated column headers, a continued banner, page numbers, and the totals/summary block kept together instead of being cut off at the bottom.
Mail
- Mail tab now paginates through Gmail past 25 messages β The Mail tab previously stopped at the latest 25 messages, so older emails were unreachable.
Marketing
- Clearer page titles and link labels for search engines β Search and social titles now describe Conopeum as a Gmail-first task manager, and integration links are properly labeled.
- New "Gmail shared inbox" landing page β A dedicated /shared-inbox page for teams managing shared Gmail inboxes.
v2.1
Β· 2 updatesTasks
- My Tasks sees every assignee on a shared subtask β When a subtask had multiple assignees, only the first person listed saw the parent task in My Tasks. The filter now checks every assignee on the subtask, so all responsible team members see their work.
Platform
- Workspace member removal requests work again β Requesting account deletion for a workspace member failed because the membership query selected `display_name` from `organization_members` β a column that does not exist on that table (display_name lives on `profiles`). The .maybeSingle() call returned an error, so the handler treated the member as missing and threw "That person isn't a member of this workspace." The select now reads `user_id, role, display_email` (the real columns on organization_members), and the request label falls back to `prof.display_name || member.display_email || prof.email`, so admins can submit removal requests again.
v2.0
Β· 88 updatesTasks
- Email attachments no longer dropped when creating a task from an email β Photos and files attached to an email are now kept when turning the email into a task; only tiny inline logo/signature images are skipped.
- Email Out β reply to clients from a task β Reply to a client (or start a fresh email) straight from a task using your own connected Google account. The message lands in your Gmail Sent folder and stays in the same thread, includes your saved HTML signature, and can attach task files. Every send is mirrored on the task trail with recipients, delivery status and a "View in Gmail" link β failures are recorded too. Gated by a new workspace toggle plus the "Email clients from a task" permission (owners and managers by default), and it respects the existing email kill switches.
- Fix: renaming split-off subtasks β Renaming a task created by splitting a subtask off a parent failed with an error.
- Sort tasks by channel
- Upload files while emailing a client β Sending a client an attachment used to require adding the file to the task first.
- Waiting tasks can return to Active automatically β New workspace setting: when a waiting task reaches its follow-up date, the waiting note clears itself and the task reappears in the active tabs. Clearing the note (or a client comment, if that option is on) still returns a task to Active instantly, and owners/managers get a "Run now for due tasks" button.
- Waiting tasks hidden from active views β Tasks with a "waiting on" note now move out of the active task tabs and their counts, and appear only in the Waiting tab, so the active list stays focused.
- Waiting-queue settings moved to module-owned storage β The two Waiting tab switches (clear on comment, release on follow-up) now live in their own workspace settings table behind a single accessor, so the Tasks module owns its own configuration.
Timesheets
- Fixed empty employee list when logging time for someone β Owners and managers saw no one in the "Log time for an employee" dropdown.
- Managers can enter time for an employee β Owners, managers, and a member's assigned approver can log a manual time entry on that person's behalf from HR review β Timesheets. The entry lands in their unsubmitted time and rolls into their next timesheet submission.
- Permission: enter time for others β New workspace permission "Enter time for others" controls who can log manual time on another member's behalf β configurable per role and per person in Settings β Permissions.
- Spreadsheet-style time grid in HR review β New "Time grid" tab lets owners, managers and approvers type hours into a week-by-employee table with Excel-like keyboard navigation and per-cell saving. Manager-entered time is tracked separately from employee-tracked time. Gated by the "Enter time for others" permission.
- Timesheet status dashboard in HR review β New "Timesheet status" tab in HR review rolls up submitted, returned-for-changes, and approved timesheets per employee over any date range, with approved hours totals and quick 30/90-day and year-to-date presets.
- Timesheet status drilldown per employee β Click an employee row in HR review β Timesheet status to expand their individual timesheets for the selected date range, with status, submitted/decided dates, and hours.
Inbox & Email
- Default email signature per workspace β People without a signature (or who prefer a shared one) had no signature on outgoing email.
- Fix: Email Out failed when the reply-to address had a display name β Replying to a client from a task errored out because Gmail prefills recipients as "Name <email@example.com>".
- Fix: replying to an existing email from a task no longer fails β Emailing a client worked from plain tasks but failed when the task came from an email.
Integrations
- Integration sync clean-up
- Unified OAuth token refresh across integrations β Reconnect prompts and token expiry behaved differently per integration, so a fix in one never reached the others.
Google
- Google task sync clean-up
Platform
- Billing data moved into its own store β Plan, trial, gift, grace and workspace limit data moved out of the workspace record into a dedicated billing store that only the billing system (or a super admin) can change. New workspaces get their billing record automatically, members can see their own plan, and plan changes from Stripe apply to live billing only β so test payments can never alter a real plan.
- Channel settings moved to module-owned storage β Workspace channel switches and the Social/Website/Bulletin labels now live in a dedicated channel settings table owned by the Tasks module, continuing the workspace-record cleanup. No behavior change.
- Code audit: module scorecard refreshed β The internal tracker had drifted from what is actually on disk.
- Customers and ClickUp beta switches moved into their own stores β Keeps each feature's settings owned by its own module instead of one shared workspace record.
- Docs & specs coverage expanded β Added living specs for the HR document vault + holiday calendars, the Customer Portal add-on, Content (blog/help/site copy), the MCP server, and Code tracking. The module registry now also points at the new module folders so editing those files keeps their spec in sync.
- Duplicate workspaces can no longer be created β Sign-in bounces dropped people on the Get started page with a prefilled workspace name, so each retry created another empty workspace.
- Engineering tracker + connection map refreshed β The super-admin code-tracking area was re-audited against the current codebase: finished refactors are now marked done, stale items re-worded, newly-spotted debt added, and the module connection map now shows the real folders, tables and dependencies including SMS, Customer portal, Content & translations, and AI & credits.
- Engineering: closed out the three in-progress modularization items β The Tasks module boundary is now documented, time-off accrual math lives in one folder, and every data-loading page shows its own friendly error screen with a retry button instead of the generic app error.
- Fixed sign-in redirect loop β Signing in no longer bounces between the app and the onboarding page when a workspace lookup is slow or fails β the app now adopts an existing workspace instead of redirecting in circles.
- Hardened three server helpers against a rare crash β Removes a latent crash risk on ideas, roadmap and workspace AI settings.
- HR settings moved into the HR module's own store β The HR module switch, time-off switch and fiscal year start now live in a dedicated HR settings store instead of the workspace record. Existing values were migrated, so nothing changes for users.
- Manually delete users and workspaces (with a recorded reason) β Admins occasionally need to remove a person or a workspace, and every removal should be traceable.
- Notifications and scheduled emails now one module β Outbound messaging logic was scattered, making it easy for senders, variables and kill switches to drift apart.
- Payment webhook processing split into focused pieces β The Stripe webhook is now a thin entry point that verifies the signature and hands off to dedicated pieces for subscription events, plan syncing and event logging. Every delivery is recorded and always acknowledged, so a one-off failure can be replayed from the admin tools instead of Stripe retrying for days.
- Permanent sign-in bounce prevention β Prevents recurring login redirects and cross-tab session disruption.
- Single module root β One home for every module keeps AI features and integrations predictable to maintain.
- Site content is now private by default β New blog posts, help articles and marketing copy now start out private, so nothing goes public on the website until someone explicitly publishes it.
- Stabilize sign-in session handoff β Prevent users from bouncing between sign-in and the app while the OAuth session hydrates.
- Stabilized sign-in and protected-page navigation β Prevent signed-in and signed-out users from bouncing repeatedly between protected pages and the sign-in screen.
- Task defaults moved into the Tasks module's own store β Workspace task backend, default destination, default section, default assignee and AI email-subtask extraction now live in a dedicated task settings store instead of the shared workspace record. Behaviour is unchanged.
- Tasks code moved into its own module β Everything that powers tasks now lives in one place.
- Text-message settings moved into the SMS module β Continues breaking up the oversized workspace settings table so each module owns its own storage.
- Timesheet settings moved to their own table β Keeps timesheet/timer options owned by the Timesheets module instead of the giant workspaces table.
- Workspace branding & themes moved to their own storage β Keeps the workspace record lean and makes branding a self-contained module.
- Workspace email settings moved into their own store β Keeps each module's settings in its own table so unrelated features stop piling columns onto the workspace record.
Product
- Email Out β Send an email to a client straight from a task using a team member's connected Google account β with the right signature, reply-to address, and file attachments β and the reply lands back on the task.
Accounts & Access
- Fixed sign-in redirect loop β Signing in no longer bounces between the sign-in page and the dashboard. The app now trusts your stored session and only returns you to sign in when the session is truly invalid, instead of on a temporary network or rate-limit hiccup.
- Prevent stale-session login redirect loops β Keep users on the sign-in screen when a cached session is no longer valid instead of bouncing between sign-in and the app.
Atarim
- Atarim settings moved to their own storage β Keeps integration settings out of the shared workspace record.
Customer Portal
- Customer Portal code moved into its own module
Engineering
- Atarim and Plutio code moved into their own modules
- Automated tests for high-risk helpers β Silent math bugs in rounding, entitlements and sync conflict detection are the most expensive kind β they corrupt data quietly.
- Faster, steadier client emails from a task
- Google & Gmail code grouped into one module β Makes future Google work easier to find and safer to change.
- Shared webhook signature verification β Stripe and the other providers now share one signature check with the same replay-window and constant-time comparison protections, instead of four separate copies where a fix in one never reached the others.
- Text messaging code moved into its own module
- Time grid code clean-up β Split the largest timesheet file into focused pieces (grid reads, cell writes, holiday/time-off fill, retroactive time off, and period submission) so the Time grid is easier to maintain. No change to how it works.
- Timesheet rounding helpers moved into the timesheets module β Rounding rules had two homes, which made changes easy to miss.
Hr
- Fix: recording a retroactive paid day off from the time grid no longer errors β The Time off dialog on the time grid failed to load policy types.
- HR review access managed in Role defaults β HR review visibility and actions now follow the hr.view_reports, timeoff.approve, and time.enter_for_others permissions instead of hardcoded owner/manager roles, so access can be granted to any role or individual member in Settings β People β Role defaults.
- HR Review opens with timesheets submitted for staff without logins β Timesheets submitted from the Time grid for login-less staff crashed the HR Review page.
- HR Review: timesheet and voucher period dates no longer shift back a day β Semi-monthly periods like 7/1β7/15 were displayed as 6/30β7/14 for anyone in a timezone behind UTC.
- Semi-monthly pay periods and submit from the Time grid β Payroll runs twice a month, and managers needed to submit the timesheet right after entering the hours.
- Time grid lists every employee, even without a login β Payroll is tracked for all staff, including people who never sign in to the app.
- Time grid: date header stays visible while scrolling β With many people on the grid, the date columns scrolled out of view.
- Time grid: observed holidays highlighted with one-click holiday pay fill β Managers entering payroll time had no indication of observed holidays and had to type holiday hours by hand.
- Time grid: pick any team member when entering time for one person β Managers entering time for a single person could only see the first person in the list.
- Time off: cancel a request from the person profile β Leaders can cancel a pending or approved time-off request directly from the Requests list on a person's Time off tab; cancelling restores the hours to the balance and records the reason in the audit trail.
- Time-off balances update for staff without logins β Approved time off (including days recorded from the Time grid) now posts usage to the ledger for people who have not been invited yet, so balance and YTD totals deduct correctly. Existing approved days were backfilled.
- Timesheets: approved vacation/sick days show and are flagged on the time grid β Paid days off were invisible on the timesheet, so payroll hours had to be reconciled by hand.
Hr β Next Up (Bigger)
- Expense reimbursements β Receipts, manager approval, payroll export.
Languages
- App available in more languages β People who prefer another language had to work in English.
- Manage languages and translation helpers β Only developers could add a language or fix wording.
- Screenshots and help content follow your language β Help pages showed English screenshots and copy to everyone.
- Text translates itself as it appears β New wording used to stay in English until someone translated it by hand.
Marketing
- v1.5 announcement blog post β Published "Introducing Conopeum v1.5" covering SMS, PTO hardening, timesheet PDFs, scheduled emails and the public changelog.
Marketing Site
- Refund Policy page fix
Onboarding
- Turn off the welcome popup β People who already finished setup kept seeing the welcome popup.
Permissions
- Fixed permission checks hiding admin actions from owners β Owners and managers were shown read-only views in HR review and missing topbar links because permissions were read from the wrong place. Access now resolves correctly everywhere.
- HR permissions in role defaults
Platform Admin
- Attach supporting files to account deletion requests β Reviewers need evidence (screenshots, written removal requests) attached to the request itself.
- Deletion requests show a full activity timeline β Requests only showed the filing date, so there was no record of who approved, denied or withdrew one.
- Deletion requests: impact preview and status emails β Requesters had no visibility once a request was filed, and reviewers had to guess what a deletion would affect.
- Scheduled account deletions β Platform admins can approve an account deletion for a specific date and time instead of deleting immediately. An hourly job runs it at that moment, it can be rescheduled or called off beforehand, the approval email states when it will happen, and a failed automated run shows the error on the request.
- Workspace owners can request account deletions β Owners could remove someone from their workspace but had to email us to delete the actual sign-in account.
Product & Marketing
- Public changelog page β Every released version is now published at /changelog, grouped by release and category, with a version link in the site footer. Individual roadmap items can be hidden from the public page with the eye toggle on /admin/roadmap.
Settings
- Search box on the role-defaults permissions table β Type part of a permission name to jump straight to it instead of scrolling the full matrix.
Travel & Mileage
- Travel expense settings moved to module-owned storage β Keeps the shared workspace record small and lets the travel-expense module own its own settings.
v1.5
Β· 79 updatesTasks
- Create tasks by text message β Texts from a recognized member's mobile number become tasks automatically; unmatched numbers are held in a new Inbound texts review queue.
- Default tasks view persists across sign-ins
Timesheets
- Timers now ask for a note when you stop them β Time entries were often saved with no context about what was worked on.
Notifications
- Approval nudges and replies by text β Timesheet and travel-voucher submissions text approvers, who reply APPROVE or DENY with a single-use code. Permissions and self-approval guards are re-checked on every reply.
- Text messages (SMS) via your own Twilio number β Workspaces connect their own Twilio account and number in Settings β Integrations, with a workspace on/off switch and a test-message button.
Integrations
- Customize your text-message wording β Every workspace phrases reminders and approval requests differently, so the shipped wording rarely fits as-is.
- Opt a person in to text messages from their profile β Each person profile now has a Text messages (SMS) card on the Overview tab: add their mobile number and flip the opt-in toggle. Only opted-in people receive workspace texts and have their replies recognized; opting out is recorded with a timestamp.
- Send test SMS from the text-messaging card β One click sends a test text to your own workspace number and shows the provider's delivery state (queued, sent, delivered, or failed) right on the card.
- Text messages (Twilio) listed on integration statuses
- Two-way texting with customers β Text opted-in customer contacts about their tasks and have their replies come back as customer-visible comments on that task. Numbers and consent live on the customer's Contact tab (added numbers start opted out), with a separate workspace "Text customers" switch, an editable customer message template, and STOP/START honoured on both sides. Customers never receive approval codes and cannot create tasks by text.
Admin
- Ideas queue hides shipped ideas
Platform
- Live Google Analytics reporting in super admin β Super admins had to leave the app to see traffic numbers.
- Persistent topbar across the app β The workspace topbar (logo, workspace switcher, timer, profile) plus a quick nav row now stays visible on every signed-in page, so you no longer have to backtrack to reach other areas.
- Real delivery status for scheduled emails β "Sent" only meant the provider accepted the message, so bounces looked like successes.
- Workspace member removal permissions aligned β Owners and managers could add and edit members but not remove them.
Docs & Help
- Help article: date tokens in scheduled emails β New public help article documenting every scheduled-email date token plus the :nextweekday, :prevweekday, :weekday and :noday modifiers, with a timesheet-reminder example.
Email & Communications
- Customer texting bundled with Customer Portal β A customer text reply lands as a customer-visible comment, so customer texting is the Customer Portal over SMS - same audience, same consent posture. No new SKU needed.
Hr
- Annual Personal Day capped as use-it-or-lose-it β Carryover was stacking to 16h instead of resetting.
- HR Review PDF downloads β One-click PDF export for timesheets and travel expense vouchers from /hr-review.
- Ledger History tab on Person -> Time Off β Chronological ledger with Date, Type, Hours, Prior -> After, Who, Note and a one-click Reverse button (leader-only).
- Nightly PTO integrity sweep + super-admin alerts card β Cron job at 04:30 UTC scans every workspace and writes findings to time_off_integrity_alerts; PtoIntegrityAlertsCard surfaces them on the platform dashboard.
- Paste rich email signatures β Copying a signature out of Gmail or Outlook and pasting it into a person's signature block now keeps the logo, links and table layout instead of dropping to plain text.
- People merge + workspace profile β Combine duplicate people and let members maintain their profile per workspace.
- Person Type tabs + profile chip editor β Filter the People list by type and edit the type from the profile header.
- Policy card math clarity (accrued + grant = total) β Balance cards now show the explicit accrued + grant math and stop projecting future accruals for annual_lump policies.
- PTO integrity alerts show the details β Admins could see an error count but not what failed.
- PTO ledger balance snapshots β Every time_off_ledger row now stores prior_balance_hours and balance_after_hours via trigger. Historical balances are reproducible and drift is instantly detectable.
- PTO ledger reversals (non-destructive undo) β Admins reverse an entry via a compensating adjustment row instead of deleting. Original stays visible, downstream snapshots recompute automatically.
- Recompute time-off snapshots from HR review β Managers can rebuild ledger balance snapshots per employee or for everyone at once directly from the Time off balances tab, without opening each person's profile.
- Summary timesheet PDF (no notes) β Long note text made printed timesheets sprawl over many pages.
- Timesheet lock on approval β Once approved, only managers/owners can edit; employees are locked out.
Integrations β Atarim
- Atarim tasks keep the customer name in the title β Tasks synced from Atarim now always get the "[Customer]" title prefix, even when the sync did not pass the customer along. Existing Atarim tasks were backfilled.
Integrations β Shipped
- Atarim: bots toggle, manual entry, hierarchies, resync purge β Exclude AI teammates by default, manually link projects when the picker is incomplete, mirror subtask hierarchies, and purge stale comments on resync.
- Atarim: long task titles clamped β Huge Atarim titles were breaking task updates.
- Customer list integration badges β The customers list now shows a badge next to a customer name when they are connected to Atarim or Plutio, so you can spot linked accounts at a glance.
- Google account visibility toggle (private/shared) β Swap connected Google accounts between private and shared without reconnecting; fixes GOOGLE_NO_REFRESH_TOKEN.
- Google Tasks priority-tag reconcile β Read-before-write safeguard on fan-out plus a reconcile pass that strips [priority:*] fingerprints and removes stale mappings so completed Google tasks stop resurfacing.
- MeetJamie: clean plain-text summaries β Imported summaries were rendering as code blocks.
- MeetJamie: import from a shareable link β Meetings can be imported without a Jamie API key.
- Plutio project picker pagination β listPlutioProjects now paginates up to 5,000 projects so large workspaces see everything in the combobox.
- Plutio project picker pagination β Workspaces with >200 Plutio projects only saw the first page in the picker.
- Plutio: bulk sync no longer expires mid-run β Manual "sync all" failed with JWT expired.
- Plutio: multi-customer projects + create fix β Share one Plutio project across multiple customers; fixed 400 "title not allowed" on create; added searchable project combobox.
People
- HTML email signatures on person profiles
Platform β Shipped
- Admin Docs & Specs registry β Registry (_modules.json) drives which spec .md to update when files change.
- Admin Ideas queue β Central place to triage, vote on, comment on, and promote quick ideas into roadmap rows.
- Changelog timeline (ISO-week grouping) β Human-friendly release history grouped by week and category.
- Conopeum revenue card β Pull Stripe revenue filtered by metadata.external_id so unrelated products are excluded.
- Costs & credits super-admin dashboard β Track AI credit usage, spend, and top-ups per workspace and overall.
- Custom Google OAuth app for sign-in β Sign-in screen now shows "Conopeum" and routes users to /app after auth.
- Larger build memory so deploys stop failing β Builds were running out of memory.
- Post-auth redirect to /app β After Google sign-in users landed on / instead of the app shell.
- Post-signin redirect to /app β index route forwards authenticated users to /app instead of leaving them on the marketing home.
- Product overview doc for the platform β Needed a copy-ready feature breakdown.
- Quick Idea floating launcher β Capture ideas from anywhere in the app without breaking flow (super admin only).
- Roadmap PDF export β Download release notes + full roadmap as a shareable PDF.
- Roadmap progress bars + version pills β Visualize checklist completion and which versions each partial shipped in.
- Roadmap versioning + Make new release β Bundle shipped work into named releases (vX.Y) with released_at stamping.
- Security hardening (RLS, search_path, deps) β Multiple rounds: rescoped public-role policies to authenticated, fixed mutable function search_path, upgraded vulnerable deps, blocked self-approval on task edit requests.
- Server health banner + workspace load retry β Automatic retry with fallback UI when the workspace page fails to load.
- Split features across releases β Checklist items can ship in their own version independent of the parent row.
- Stripe migration (from Paddle) β Manage products and prices directly from /pricing-admin using Stripe.
Plutio
- Plutio time entries include the timer note in the title β Time-track lists in Plutio showed only the task title, making entries hard to tell apart.
Scheduled Emails
- Test sends can skip the [TEST] subject prefix
Sms
- Inbound text inbox: approval replies, pending reviews, and sender names β The inbound texts page now has Needs review, Approval replies, and All views. Every message shows who sent it (member, customer contact, or unrecognized number), when it arrived (exact plus relative time), a plain-language description of what the text did, and when it was reviewed.
Tasks β Shipped
- AI email-to-subtask extractor β Pulls actionable subtasks out of long attached emails on demand.
- Attach-to-task dialog overflow fix β Long task titles no longer break out of the popup when picking a task to attach mail to.
- Multi-section bulk assignment β Assign multiple sections to selected tasks (renamed from Move to Section).
- Priority editor on saved tasks β Change high/medium/low priority any time from the task detail view.
- Recurring Tasks dashboard β Central place to see and manage repeating tasks (π badges on the board).
- Refresh from Google button β Force re-fetch of promoted/split tasks so the board reflects Google Tasks immediately.
- Task comment reads + My Inbox β Track unread comments per user and surface them on the dashboard inbox.
- Waiting queue for tasks β Park tasks that are blocked on someone else on a dedicated /waiting view with badges.
Text Messages (Sms)
- Site-wide SMS kill switch β Super admins can pause all text messaging everywhere from Super Admin β Overview, the same way outbound emails can be paused. While off, nothing sends (including test sends and template samples) and inbound texts are ignored.
Time Tracking & Pm
- Plutio β searchable customer picker β The Plutio project picker dropdown became unwieldy as customer lists grew.
- Timer stop notes up to 8,000 characters β Stopping a timer failed when notes were long.
- Timesheet copy: placeholders render real values β Submit dialog and timer labels showed raw placeholder tokens instead of dates and hours.
- Timesheet Due reminder now names the next business day β Weekend deadlines in the Timesheet Due schedule roll forward to Monday instead of reading as Saturday or Sunday.
- Weekday-aware date tokens in scheduled emails β Date tokens now support :weekday, :nextweekday and :prevweekday so weekend dates render as the nearest business day (Sunday shows as Monday). Chainable with :noday.
v1.0
Β· 57 updatesAnalytics & Website
- Fathom Analytics β Privacy-first traffic analytics.
- Google Search Console β SEO insight for admin dashboard.
Automation β Shipped
- Custom variables + relative dates β Tokens: {{today+N}}, {{next.tuesday}}, {{period.start/end}}, {{site.name}}, etc.
- From-name / Reply-to control β Set who the scheduled email appears from.
- Scheduled emails β Auto-email panel per task with delivery history and test-send.
- Semi-monthly cadence β Anchor days (15th / end-of-month) with weekday shift.
- Site-wide + per-workspace email kill switch β Master toggle to pause all outgoing mail.
Email & Communications
- Emailit β Transactional outbound + inbound webhook.
- Gmail β Core differentiator β multi-account inbox β tasks.
- Google Calendar β Task due dates β calendar events.
Hr
- Advance grant policies β Earned-to-date vs Total-available metrics.
- Configurable time rounding rules β None / 5 / 6 / 7-min / 15-min + first-entry min-duration.
- Document vault (Google Drive links) β Per-person HR docs with optional expiry.
- Employment types (workspace-managed) β Configurable per workspace with search + filter.
- Fiscal year per company β Drives vacation reset dates (e.g. July 1).
- HR Review dashboard β /hr-review with New/Done tabs, noted status, approve/reject, PDF downloads.
- HR Viewer role (bookkeeper) β View-only + noting for balances, timesheets, vouchers.
- Interim / shadow employees β Managers can seed time-off and profile data before an invite is accepted.
- L3Y FTE accrual basis β Accrue vacation based on avg hours worked in last 3 years.
- Person profile tabs β Time off, Timesheets, Tasks, Permissions, Documents, Manager tabs.
- Person profiles β Hire date, employment type, resume link, emergency contact, notes, permissions, manager tab.
- Sick vs vacation policy selection on request β Employees pick policy type when requesting time off.
- Time-off integrity verifier + ledger guards β DB constraints + verifyTimeOffIntegrity to prevent bad math.
- Time-off policies + tenure tiers β Per-workspace policies, employee eligibility, at-risk carryover, YTD earned/used, manager report.
- Timer tracking β Decoupled from timesheets; usable as a task feature (also pushes to Plutio/ClickUp).
- Timesheet approval + lock β Approved timesheets lock; owners/managers can still edit.
- Timesheet PDF export β Branded PDF from HR Review and personal timesheet.
- Timesheets β Periods, submissions, approvals, lock-on-approval, PDF export.
- Travel expense vouchers (mileage) β IRS-rate mileage entries, receipts, approval workflow, PDF export.
Hr - Time Off Requests
- Allow Type of time off to be selected when there is more than one for an employee
Hr β Quick Wins
- Birthdays + hire anniversaries β Surfaced on the dashboard for the next 30 days.
- Documents vault β Per-person HR docs (offer letter, W-9/I-9, NDA, handbook) stored as links (Google Drive), with optional expiry.
- Holidays calendar β Per-workspace paid holidays with recurring flag.
- Weekly hours per person β Expected hours/week (drives future overtime + accrual accuracy).
Meetings & Notes
- Fathom β tasks β Convert Fathom meeting notes into tasks automatically.
Platform β Shipped
- Admin ideas + Quick Idea launcher β Floating capture button for super-admins.
- Impersonation floating panel β Super-admin impersonation with scoped Google surfaces.
- Multi-workspace profile β One login, per-workspace identity + additional emails.
- People types + merge β Merge duplicate people; HR gating by type.
- Server health banner + workspace retry β Transient load errors auto-retry with diagnostics panel.
- Stripe billing (replaced Paddle) β Products/prices managed in /pricing-admin.
Storage & Docs
- Canva β Design asset attachment.
- Google Drive β Attach Drive files to tasks without re-upload.
- MyMarky β Push task to MyMarky as social post draft; media library sync.
Tasks β Shipped
- AI email β subtask extraction β On-demand Sparkles button extracts subtasks from linked emails.
- Bring-Your-Own-AI keys β Per-workspace organization_ai_keys; toggle ai_extract_email_subtasks.
- Bulk complete / delete β Multi-select bulk actions on the task list.
- Multi-section assignment β Assign a task to multiple sections; bulk-assign supported.
- My Inbox (new comments) β Dashboard tile surfaces unread task comments across the workspace.
- Recurring badge on task list β Indigo Recurring chip next to the due-date chip.
- Recurring tasks dashboard β Workspace-wide /recurring-tasks view with quick Stop.
- Refresh from Google β Manual Refresh button re-pulls Google Tasks state on demand.
- Subtask promotion / split β Promote a subtask to a standalone task; inherits org and highlights on the board.
- Ticket merging β Merge two email threads from the same customer into one task.
- Waiting queue β Park tasks blocked on external replies in a dedicated queue with badges.
Time Tracking & Pm
- Atarim β User-requested.
- Plutio β First integration; small-agency favorite. Reference implementation.
Want something on this list? Tell us what to build next.
