Changelog

What's New

New features, improvements, and fixes shipped to Tenon. Updated weekly.

Release

Cost-Plus Client Dashboard and Timesheets Through MCP

Clients can follow their cost-plus budget and schedule; connected AI assistants can manage crew timesheets with the same permissions as the app.

What shipped

Give cost-plus clients a project overview. The client dashboard brings together built and committed costs, the current estimate, payments, balance due, schedule progress, and items needing attention. Sections follow the company’s Client role permissions. #4026.

Include crew labour in work done. The dashboard’s Built so far figure includes approved or paid billable crew hours at the person’s billing rate. Schedule progress stays below 100% while tasks remain open. #4083.

Manage crew timesheets through your connected AI assistant. MCP tools can create, read, edit, delete, restore, submit, approve, and reject time entries within your permissions. They use the app’s payroll-period locks; approvals recalculate overtime and notify the employee. #4017.

Your logo appears in the client portal. Company branding images load for clients without requiring a staff login. #4013.

Clients can read project logs with photos. The portal’s Project Logs list opens log details and their photos. #4074.

Schedule-progress correction: #4095.

Release

Preview the Client Portal and Catch New Messages

Check a client’s portal from their profile, and receive notifications when clients write back.

What shipped

Check what a client will see. Admins can open a read-only portal preview from the client’s contact profile, before or after inviting them. It shows that client’s projects in a separate window. #3987.

Client messages reach the project team. New client messages notify the project’s staff team, with company admins and managers as the fallback when no team is assigned. Project-chat notifications also reach staff teammates. #3991.

Invoice balances keep their total. Recording a payment no longer wipes the total on an invoice without line items. The balance remains the total less payments. #3992.

Release

A More Compact Project Resources View

Keep each person’s task bars on one row, with room to expand when you need the detail.

What shipped

See the crew without scrolling past a row for every task. The project Resources tab packs each person’s task bars into one row. Overlapping tasks use separate lanes within that row, and you can expand a person to split by task. #3956.

Clients get notified when you share a daily log. Sharing a daily log now sends the client notification that was previously missing. #3883.

Release

Missed Clock Punches and Employee Reimbursements

Correct a missed punch, see totals for filtered hours, and settle an employee’s reimbursements together.

What shipped

Enter the time you meant to clock in or out. When your company’s clock-in policy allows it, the timesheet controls let you set a punch time when you forgot to tap. List filters stay visible while you work. #3679.

See totals for the hours you are reviewing. A sticky timesheet footer shows totals for the filtered set. #3698.

Settle an employee’s reimbursements in one action. The bulk reimbursement action, available through MCP, checks that the bills have cost codes before changing their reimbursement status. If coding is missing, the whole action waits for correction. #3799.

Release

Consistent Overtime When Approvals Arrive Together

Overtime recalculation keeps each employee’s week consistent during concurrent approvals.

What shipped

Approve hours without competing overtime updates. When approvals arrive together, recalculations for the same employee and week run in order. Regular hours, overtime, and time-bank accrual are updated together. #3529.

Release

A Simpler Daily Log Template Picker

Edit your company’s Daily Log template in place and restore its default form when needed.

What shipped

One Daily Log choice in the picker. The template list shows your company’s editable Daily Log instead of competing system copies. #3406.

Restore the default form in place. Revert to default works even when the template already has logs against it. #3407.

Choose a daily-log photo from your library. The native photo prompt supports the camera and photo library, and upload failures are surfaced. #3409.

Release

Assign Work Before Choosing a Project

Employee assignment works for tasks that do not yet belong to a project.

What shipped

Give someone the task first. You can assign an employee without selecting a project. Unscoped tasks no longer leave you with an empty employee picker. #3230.

Release

Clearer Forecasting and Crew Assignments

Collapse forecast lanes, move anticipated dates, and work with overlapping crew assignments.

What shipped

See anticipated and confirmed dates together. Collapse a project’s Forecasting rows into one lane, or expand them to compare the two plans. Expand-all and collapse-all controls handle the whole view. #3032.

Move anticipated work on the timeline. Drag anticipated bars in Forecasting to reschedule them and save the changed dates. #2989.

Work with overlapping assignments. Overlapping crew assignments use separate lanes. Click an assignment to edit or remove it, with labels kept visible as you scroll. #3028.

Release

Clock In Without Signal and Reuse Your Project Plan

Offline clock punches keep their tap time, and project templates carry task dependencies and phase assignments.

What shipped

Clock punches keep the time you tapped. Offline clock-in and clock-out queue for sync when your connection returns. Payroll uses the captured tap time when it is within the allowed window: no more than 24 hours old or five minutes ahead of the server clock. Punches outside that window use server receipt time. #2750.

Carry the plan into the next job. Saving a project as a template with tasks now preserves their phase assignments and dependencies when you create the next project. #2889.

Link phases in the schedule. Phase-to-phase dependencies let you show which stage must finish before the next can start. #2881.

Release

Sage Alert Controls and Field-Work Fixes

Choose how Sage reaches you, find daily logs in search, and undo an accidental deletion.

What shipped

Choose which Sage alerts reach your phone. Set each proactive alert category to push, in-app, or off in Settings → Sage → Alerts. Quiet hours pause the morning digest push during your chosen window. #2643.

Find daily logs from global search. Project logs are included in search, so you can get back to a site report without opening each project. #2560.

Undo a deleted daily log. An Undo toast lets you restore a log after an accidental delete. #2458.

Release Major release

Schedule Gets a Full Redesign — Board, Calendar, List, and Gantt on One Shared Model

Board, Calendar, List, and Gantt now share one visual and interaction model — merged Location + Assignee picking, on-card dependency stacking with a Blocking line, a real dependency editor on the Gantt, a capacity rail on Assignments, crew-hours overrides, and full parity on mobile.

What shipped

Board, Calendar, List, and Gantt now look and act like one screen, not four. All four schedule views were rebuilt on a shared chassis — same picker patterns, same card shapes, same selection model — so switching views doesn’t mean relearning the interface.

Pick a location and an assignee in one step. The old separate Location and Assignee dropdowns are merged into a single picker across List, Board, and the task side-peek.

See what’s blocking a task without leaving the card. Dependencies now stack directly on the task card and side-peek, with a dedicated “Blocking” line showing what’s holding a task up — no more digging into a separate dependencies tab.

The Gantt got a real dependency editor. Drag a relation chip between bars to set a dependency, right-click a bar for quick actions, and collapse or expand phase rollups to work at whatever zoom level you need.

A capacity rail on Assignments, so you see overload before you create it. The Assignments and Resources views now show a per-person capacity rail plus an “unassigned” row, so double-booking and orphaned tasks show up before they become a problem, not after.

Crew-hours overrides feed straight into Calendar load. Set exceptions to standard crew hours per person from Settings → Team members, and Calendar’s load calculations reflect them immediately.

Mobile catches up to desktop. Phone List and tablet Gantt now carry real bars, room chips, and relation tokens; tablet Gantt supports pinch-to-zoom; the mobile assignee sheet groups on/off-project people and adds an invite-by-email footer for anyone not yet in the system.

Release Major release

Tenon for Android — Now Available on Google Play

The native Android app is live. Same account, same data as Mac, iPhone, and the web — schedules, budgets, dailies, RFIs, and Sage, from your phone or tablet.

What shipped

Tenon is now on Google Play. The native Android app joins Mac, iPhone/iPad, and web — same account, same data, everywhere.

Field logs, timers, and RFIs from your phone. Clock in, file a daily log, snap a photo from your camera, and check open RFIs without leaving the job site.

Sage on Android. Ask Sage a budget question or dictate a daily log by voice — same assistant, same permissions as the rest of Tenon.

Sign in once. Biometric login (fingerprint/face unlock) keeps you signed in across sessions.

Offline-first. File a dailies entry with no signal — it syncs the moment you’re back online.

Get Tenon on Google Play.

Release Major release

Sage Goes Proactive — Budget, Deadline, and Approval Alerts

Sage now proactively flags at-risk budgets, upcoming deadlines, overdue tasks, stalled change orders and timesheets, unordered materials, and clients waiting on a reply — instead of waiting for you to ask.

What shipped

Sage stops waiting for you to ask. Proactive mode already existed in your Sage settings, but most of its alert categories weren’t actually sending anything. Seven of them do now. Each one checks once a day and shows up as a notification for the people who need to see it — and each has its own on/off toggle under Sage settings.

Budget alerts. When a project’s spend crosses 75% of budget, Sage flags it to admins and managers as a watch item; past 90%, the alert escalates.

Deadline reminders. Tasks due within the next 5 days get a heads-up to the assignee and to admins/managers, with urgency rising the closer the due date gets.

Overdue task alerts. Once a task is past due, Sage notifies the assignee and admins/managers — the longer it sits, and the higher its priority, the more urgent the alert.

Change order reminders. A change order stuck in pending approval gets a daily nudge to admins and managers that grows more urgent the longer it waits.

Timesheet approval reminders. Entries waiting on approval get flagged to your approvers, with urgency climbing as the payroll period-end gets closer.

Client email nudges. If the last email on a project came in from the client and nobody’s replied yet, Sage tells admins and managers — and keeps nudging harder the longer it goes unanswered.

Materials alerts. When a material misses its order deadline without being ordered, Sage flags it to admins and managers so it doesn’t quietly become a delay.

Your call how loud Sage is. Reactive/proactive mode, the intensity slider, and each category toggle above still control the whole rail — turn any of them down or off from Sage settings on your profile.

Release

Permits Automation + Editable Blackouts

Permit stage transitions and inspection results now flow through Sage's automation surface, blockers and conditions carry AI-sourced context you can see and confirm, and approved schedule blackouts are editable instead of delete-and-recreate.

What shipped

Permits, wired for automation. Stage transitions and inspection results can now be set through Tenon’s AI surface, not just the UI — set_permit_state, record_inspection_result, and add_inspection_flag are live. Stage changes, new blockers, condition closures, inspection results, and revocations now notify the right people automatically.

Sage shows its work on permits. When Sage surfaces code-context on a blocker or condition, it’s attributed inline — the same badge you already see on the procurement tracker — instead of sitting as plain text you couldn’t trace back to anything.

Edit an approved blackout, don’t delete and recreate it. Changing a crew member’s approved vacation or unavailability window now takes one edit — dates, type, reason, hours — instead of deleting the blackout and starting over.

Faster path from a purchase order to the shopping run. PO procurement widgets on the dashboard now click straight through to the shopping run that’s covering them.

Release Major release

Auto-Drafted Change Orders, Procurement Sage Actions, and Project Pinning

Finish Schedule auto-drafts change orders on over-allowance selections, Sage attribution lands on the procurement tracker, permits get expandable inspection detail and blocker resolution, materials pipeline and desktop checkout tie into shopping runs, projects can be pinned in the sidebar and mobile switcher, and estimate line items get flat-dollar markup.

What shipped

When a selection blows the allowance, the change order drafts itself. Approve a pick that comes in over budget and Finish Schedule opens a draft change order automatically — no more chasing someone to write it up by hand. The attention card takes you straight to “Review draft CO.”

Procurement tracker shows Sage’s work, not just the result. When Sage auto-advances an item off a supplier email, a badge now shows up right on the tracker row — hover it for the confidence score and source email, click to undo if it called it wrong.

Sage drafts the bill from the vendor’s email. When a supplier invoice lands in your inbox, Sage reads it, pulls the vendor, date, total, and line items, and drafts the bill — split automatically across projects if one invoice covers more than one job. Set Sage to file it outright or hold it for your review.

Failed inspections, no more digging for why. Expand a failed or partial inspection on desktop and see the flags that failed it — photo, description, corrective task, open or corrected — without leaving the permit.

Close a permit blocker the same time you log the entry. The permit composer now lets you pick an open blocker to resolve when you log an update, instead of logging the entry and then hunting the blocker down separately.

Send a material straight to a shopping run. Any item on the Project Materials Pipeline that isn’t delivered yet gets an “Add to run” button — starts or adds to a shopping run without leaving the page.

Finish a shopping run, walk away with the bill. Desktop checkout now drafts a bill from what you picked, takes the receipt photo, and splits it across projects if the run touched more than one — the same flow mobile’s had, now on desktop too.

Pin the projects you live in every day. The sidebar (desktop) and project switcher (mobile) now let you pin — pinned projects float to their own section at the top and stay visible even with completed or cancelled projects hidden.

Markup line items in dollars, not just percent. Estimate line items get a %/$ toggle — set a flat-dollar markup that holds steady even if quantity or unit cost change later.

Release Major release

Budget Columns, Bill Splitting, and Team Chat Parity

Per-component budget tracking, multi-project bill splitting from desktop or mobile, task comments with @mentions, and mobile team chat parity for reactions, edit, delete, and pins.

What shipped

Budget, broken down by component. The Budget page now runs on the same table engine as the rest of Tenon, with actual costs derived straight from your bills and POs — builder-side and client-side, per component, and you choose which columns show.

Split one bill across every project it touched. Scan a bill or log a new expense from your phone, or split it on desktop — the amounts divide across the projects that shared the cost, no manual math.

Comments that carry the whole conversation. Task comments now take attachments and @mention autocomplete, so the context stays on the task instead of scattered across texts and email.

Team Chat, more at home on mobile. Reactions, edit, delete, and channel pins now work the same on your phone as they do at a desk.

Assign faster. The Assign & schedule dialog now searches and multi-selects tasks and people in one pass, instead of one at a time.

Release Major release

Timesheets — Overtime Engine, Approvals, Splits, and Payroll Sync

Automatic overtime classification, an approval-to-payroll pipeline, split entries, banked hours, GPS clock-in, and QuickBooks Payroll export.

What shipped

Overtime, calculated automatically. Regular, overtime, and double-time hours are split out by daily and weekly thresholds per province — no more manual OT math.

Approve, then pay. Marking hours paid or generating an invoice from them is now gated behind approval, with approved, paid, and invoiced tracked independently.

Split one entry across jobs. Divide a single time entry into multiple pieces across projects or cost codes, with a live balance check as you split.

Locked pay periods. Weekly, biweekly, and semi-monthly periods lock once approved; any edit after that creates a tracked adjustment instead of silently changing history.

Banked hours. Time-in-lieu now has its own ledger and mobile card, plus a request flow to cash out banked hours or vacation instead of taking the time off.

GPS clock-in. Arriving at a project geofence prompts a clock-in; location is recorded, but a missing signal never blocks a punch.

Clock someone else in. Foremen and PMs with the new permission can clock in a crew member directly, one entry per person.

Payroll, your way. Push approved hours straight into QuickBooks Payroll, or export a payroll CSV by pay bucket if you’re not on QBO Payroll — either way, only approved hours go out, and banked hours never do.

Sage watches your payroll. Sage flags missing timesheets, overtime rollups, and forgot-to-clock-out shifts before they become a payroll problem.

Release Major release

Daily Logs — Templates, Client Sharing, and a Full Activity Trail

Custom templates, edit history, client-shareable magic links, bulk PDF/CSV export, and a dedicated schedule lens for daily logs.

What shipped

Richer log content. Weather, tasks-worked, timesheets, and Sage’s daily summary now auto-populate straight into the log — one form captures the whole day.

Mobile-first capture. File a log from the field with autosave and offline drafts that sync once you’re back in range; required fields are validated before submit.

Edit history you can trust. Publishing a correction creates a new version with a full activity trail and threaded comments — nothing gets silently overwritten.

Templates, your way. Build multiple active templates, set a project-level default that overrides the company default, and version template changes over time.

Find and export in bulk. Filter and multi-select from the project logs list, then export a branded PDF or CSV — internal notes are automatically excluded from anything a client sees.

Share with clients. Turn on client sharing and Tenon sends a signed, expiring, view-only link — no login required, and internal-only content is stripped before it goes out.

On the schedule. Daily logs now show up as a recurring item on the Gantt/Resources view, with an accountability grid that tracks completion and escalates overdue logs automatically.

Release Major release

MCP Tools & Desktop App

176 AI tools now available via the Tenon MCP connector, plus native macOS desktop app v1.0.2.

What shipped this week

Tenon MCP — 176 AI tools. Connect Claude, Cursor, or any MCP-compatible AI to your Tenon workspace. Query projects, timesheets, proposals, compliance, and more — directly from your AI assistant. Setup at usetenon.com/mcp.

Desktop app v1.0.2. Native macOS app with menu bar integration, full dark/light mode support, and offline-capable local storage. Download from usetenon.com/desktop.

Help center. 11 articles covering install, getting started, and core workflows — live at usetenon.com/help.

Dashboard improvements. Multi-tab dashboards, drag-to-resize widgets, and a reset-to-defaults button for quick layout recovery.

Release

Client Portal & Sage AI Expansion

Client portal preview, expanded Sage AI tools for procurement and shop drawings, and multi-session agentic coding.

What shipped this week

Sage AI — Shop order writes. Sage can now create and update shop orders, approve timesheets, and manage procurement directly. 10 new write tools bring the total to 166 MCP-accessible actions.

Client portal branding. Customize portal colors, logo, and contact info from Settings → Branding. Clients see your brand, not Tenon’s.

RBAC improvements. Granular role-based access control across schedule, change orders, and financials. Phase B coverage ships to all workspaces.