Loading…
SGA Status · Changelog
The running log of improvements to the platform. Newest release first.
01Your account
If your name as Status has it contained a comma or a bracket, such as "Smith, John", the lookup that finds the tasks assigned to you quietly came back with nothing at all. Your My Tasks list would fail to load, and a Claude Code session using your personal key would be told it had no access to the work it was sitting on, which reads like a permissions problem and is not one. Names are now handled as names, whatever is in them, and when that lookup does fail it says so in the logs instead of looking like an empty list. The same fault was fixed in seven other places that match on a person or company name, including the priority ordering on My Tasks and matching an incoming email to the right client.
01Your tools
Status has its own connector, so an assistant can answer questions about your work without you pasting anything into it: your companies and their projects, a project or task in full, a task's whole brief, your own task list, and a search. Add https://status.sga.team/api/mcp as a custom MCP server, choose OAuth, and sign in with your normal Google account. There is no key to copy and nothing to keep anywhere. ChatGPT custom connectors are a Business or Enterprise feature; Claude takes the same address.
The one thing a connected assistant can change is a comment on a task or a project, posted under your name like any comment you type. It cannot delete anything, move a task along, email a client, or change anyone's access. It also only ever sees the companies you can see.
My Tasks (under "Set up Claude Code") lists the assistants you have connected, when each was last used, and whether it can comment or only read. Disconnect stops it on its next call. Admins see everyone's list in Settings. Reconnecting is signing in again.
The connector described its own tools using Asana wording, so an assistant could tell you that a comment "mirrors to Asana". It does not: a comment posted through the connector is stored in Status and goes nowhere else. The wording is gone, and the stale note in the code that caused it has been corrected. Old Asana references still resolve if you paste one, it is simply not how anything is described any more.
The first connection attempt from ChatGPT's desktop client was turned away with "we do not recognise the application asking for access". A desktop app sends you back to a local address on a port it picks when it starts, and Status was insisting on the exact address the app had registered, which a desktop app can never predict. It now accepts the local address it registered on whatever port it arrives on, as the standard for desktop sign-in requires. Nothing else was loosened: any other address is still refused.
The connector is switched on at status.sga.team. Nothing changes for anyone who does not connect an assistant: it is a new address alongside the app, not a change to any page you already use.
01Communications
The account owners can now set a meeting to "Only me". It is then visible to them alone, not even to other admins, and it disappears from everyone else's Meetings list. Only the person who made it private can change it back. Handy for a call that was filed automatically but should not be shared.
01Communications
Google Meet meetings file themselves, and the check that stops a meeting being filed twice looked only at the meetings still in Status. So when a meeting was removed, it was filed again a few minutes later. Status now remembers removed meetings and leaves them out.
01Dashboard
In a client card's Waiting on Client group, tasks pulled from other initiatives used to sit right under the last waiting initiative, so they looked like its tasks. They now have their own block, labelled "Tasks from other initiatives", with each task's real initiative named beside it.
02Behind the scenes
The check that stops a release going live without a changelog entry could look at the wrong copy of the code when work was done in a separate working folder, and block a release that did have its entry. It now checks the branch actually being released.
01Training
Training now has a Client Communication course. Module 1 covers your first 30 days with a client's email: reply to every email within four business hours, either with the answer or with a short note saying who you're checking with and when they'll hear back. The other modules cover how we sound (never blame the client, keep it short and friendly), working the Communication board, and short versions of the emails you'll write most often. It ends with a 28-question assessment; your score stays on the page and is not saved.
A second new course walks through the Daily Rundown: a full walk of every client and person in the morning, a quick catch-up on what changed at midday, a close-out at the end of the day, and how to present it all in the status meeting.
The email templates in Help are rewritten to match the course: shorter and friendlier, no long dashes, never blaming the client, a link to anything we mention, and Status in place of Asana as our own tool. New ones cover acknowledging an email, asking for more time, restating a new request, "we've made your changes", nudging for missing assets, moving a date and a deadline that's too tight (24 in all). The same library is Module 5 of the course, where you can filter by category and search.
Training in the sidebar now shows one link per course, so new courses appear there as they are added.
01Plans
Give the session writing a monthly plan an initiative's share link, and the plan can add new tasks to that initiative instead of creating a new one. Importing adds only the new tasks: the initiative's name, description, owner and dates stay as they are, and it stays under its own company. A finished initiative is reopened, back at the stage it had before it was completed. The preview shows what will happen before you import.
01Templates
Download sample on a starter kit now asks for a task (company, active or future initiative, the initiative, the task) and builds the kit exactly as a session would get it: the kit's Markdown at the top with every merge field filled in for that task, files/ with everything attached to the task and its initiative (links that cannot be downloaded are listed in a merge field instead), and templates/ with a folder for each Plans & reports template attached to the task. Nothing is added that is not on the kit or the template: a plan's data-sga-* attribute reference is a Markdown file on the template, put there with Insert the importer's attribute reference. Attach one from Add link, A template, Plans & reports; clicking it in the task's Files downloads just that template's part of the kit, filled in for the task. Starter kits no longer have files of their own.
A starter kit's Markdown can use merge fields for the task, its initiative, its company and the kit, like {{task.name}} or {{initiative.due}}, and blocks like {{#if task.full_workflow}} … {{else}} … {{/if}}, so one brief.md reads right for every task. Insert a merge field from the menu above each file, or download the merge field key and write outside Status. Each Markdown file can be downloaded and replaced from a .md file. A kit will not save if it uses a field that does not exist or leaves a block open, and it says which line.
Two new entries under Templates, each with categories and a New button like the libraries. Plans & reports holds the client documents (the six built in: initiative plan, update and wrap-up; monthly plan, mid-month and report) as templates you edit. Starter kits holds what a session downloads, one per kind (internal, vendor, test project) and way of working (in AI, outside AI). Each has a default Markdown file (a starter kit's AGENTS.md / CLAUDE.md, a template's guide.md), any other named Markdown files, each with its own Save button and the exact name it goes into the download under, and its files in file groups, one folder each in the download. Download sample on any of them gives you the whole thing as a zip. Nothing uses them yet: kits are still built exactly as today, from the page now called Plans & reports (legacy), until the briefing system is switched over.
Templates in the sidebar opens a menu: Plans & reports (the page it always was) and three new libraries, each filed in categories that can sit inside each other as deep as you need. Owners on a template are roles like Designer or Project manager, not people, and dates count from the start of the initiative.
Each initiative template is shown as the real initiative card, with its dates worked out as if it started today. Open one to see the full pop-up, with its tasks, its setup questions and View plan, the plan it would produce. Click any task in it to open that task's own template pop-up. A template with its brief filled in (purpose, audience, goals, approach) is a plan template.
Add link, then A template, now lets you pick the library first, then the category, then the template. Attach initiative templates to a plan task (several for a monthly plan) and the brief in Claude Code carries each one: its setup questions first, then its tasks, roles, dates and minimum hours. Nothing is created from a template directly; the tasks arrive when the finished plan is imported, after the client approves it.
Adding a task now has a step for it: a plain task, or Full Workflow with a planned date for each of the five steps. Picking a task template that uses Full Workflow fills it in, dates included, counted from today.
The first step of the new-task wizard has a Use a template link. Pick a task template and the wizard fills in from it; you still go through every step and choose the real owner. An initiative template can include task templates too, so a standard step like QA is written once.
Add a swipe file (a file, or a link with a screenshot), or use Add to library on one of our deliverables on the Deliverables page. Every entry is a copy kept in our own storage, so it keeps working whatever happens to the original. Attach one to a task so whoever builds the work starts from it.
Write the plan (the first task on a new initiative) and the QA review task are now task templates you can edit, in the Task library under System tasks. They start with exactly the content they always had, so nothing changes until you edit them. Settings, General, System templates chooses which task template each one uses.
02Tasks
A manager can give a task a minimum billable hours, the least it counts for against the client's monthly capacity once it is done. A 6-hour landing page logged at 1 counts 6; logged at 9 it counts 9. Logged hours are never changed. Set it on the task pop-up, in the new-task wizard, on a task template, or in a plan, where it stays hidden from the client. The capacity bar now counts billable hours and shows how much of it is minimums, and a done task well under its minimum gets a quiet note in case time was not logged.
03Templates
Press Use for /brief on a finished internal kit, then turn on Settings → General → Briefing system. /brief then builds that kit, from its own Markdown and the templates attached to the task, for every task it covers. Every other task, and every vendor and test project download, still gets today's kit. Turn off puts every task back on today's kit at once.
The built-in records could not be deleted before. Now any of them can, so the library holds only what is finished and the rest are added back as they are built.
04Templates
When a template could not be saved, the message just said Not allowed. It now says whether you have been signed out (sign in again in another tab and press Save: your text is still on the page) or are missing the permission to change templates.
05Settings
Can build and edit the template library, and Can see and set a task's minimum billable hours. Admins have both already.
01Tasks
Choosing A template under Add link could show an empty dropdown. The templates were only sent once the task's company had been worked out, so anything that stopped that lookup also lost the templates, even though they are the same for every company. They now load every time, whatever the task belongs to.
02Settings
Training companies were kept out of the list of companies a person can be allowed to see, so only admins could ever open them. They are now at the bottom of Clients they can view in each person's permissions, marked (training). Tick each exercise the person should work in; ticking the training parent alone does not open the exercises under it. Once granted, the exercise's repository also shows on that person's setup page.
01Planning
The sample plan and the sample update were a thin invented month: one-paragraph task descriptions, no materials, and an update that showed no progress at all. They are now a full fictional client month, Northpoint Trading: sixteen tasks whose descriptions run to fifty lines, written the way the guide asks, five of them full service builds with their steppers, materials including the ones nobody has yet, and one continuing task shown to the client but not imported. The update reports on the plan's own tasks rather than retelling them, so it carries the same detail, and its steppers show what is finished, what is in progress and what is still ahead.
A monthly plan is mostly tasks, but its guide only listed the initiative attributes and linked elsewhere for the task ones. So whoever wrote the tasks never read the rules for them, and genuinely useful attributes went unused for months. The task attribute table and a full worked example are now in the guide itself.
Descriptions keep their line breaks as of today, but nothing told anyone to use them. The guide now gives the shape: a one-line summary, headings in capitals, hyphen lists, links in full on their own line, and DONE as the last heading so the acceptance test is always in the same place. The worked example is written that way rather than as a single line.
How to decide which tasks go all the way through the client, and that you should not hand-write their review and revision rounds. That QA and revision rounds are marked not-imported because the system creates them. That a question only belongs at the top of the plan if the client can answer it today. And that a task can list the materials it needs, including the ones nobody has yet.
01Planning
Every plan now carries the Glass and Steel look: frosted panels floating over a soft light field with a warm corner, blue as the only action colour, and a much larger title. It is the same for every client, not per-client branding. Nothing about a plan's content or markup changes, so a plan you have already written simply looks like this the next time it is generated.
02Planning
A plan can mark a task as not-imported, for work the system creates itself like QA rounds and client revisions. The import always honoured that, but the preview never checked: it counted those tasks in "tasks to create" and listed them as new, so the number you were shown was wrong every time a plan used the feature properly. They now show as skipped, with the plan's own stated reason, exactly as a skipped initiative already did.
03Working a task
Once a session ran past the auto-stop cap, cancelling out of the submit questions bounced you straight back into them, over and over, so there was no way to carry on working. The cap now asks once per session rather than on every tick: it still catches a forgotten timer, but once it has asked, carrying on is your call.
04Client feedback
The review tool moved into Status, but the small script every deliverable embeds still pointed at the old review address, where it is frozen and missing everything added since. So a page could mark up questions for the client correctly and have them only half work. The vendor guide, the starter kit and the docs now all point at the maintained copy. Pages already sent to clients keep working exactly as they do today; this is about work built from here on.
01Planning
A complete fictional monthly plan built to the new template is now hosted, so the import can be exercised end to end on a practice company: three initiatives, fifteen tasks, five of them full service builds with their steppers, materials, and descriptions written the way the import now keeps them. It is obviously fictional, with 2037 dates, so it can never be mistaken for real client work.
01Working a task
A spec written with a summary, headings, a list of requirements and a "Done =" line used to arrive in Status as one unbroken paragraph, however carefully it was written, because the import collapsed every line break. It does not any more. The same description now arrives with its headings, its lists and its line breaks intact, wherever you read it: the task pop-up, My Tasks, and the one-page brief. Nothing needs rewriting - descriptions already written this way simply start reading correctly.
02Client feedback
Approve is the one thing in the review tool a client cannot undo, and the word on its own never said so - we watched somebody click it without knowing what it meant. It now confirms first: it names what is being approved, says it goes ahead exactly as it stands, and says that changes after this become a new round of work. If anything is still open on that deliverable, an unanswered question or comments on this version, the confirmation names it.
Marking up a page is now one continuous action. Sending a comment used to switch the pen off, and the only Annotate button lived inside the comments panel - which is the thing you close to see the page properly. So every single box meant reopening the panel, clicking Annotate and closing it again. Now the pen stays ready after each comment, and there is a Draw a box button on the page itself when the panel is closed. Closing the panel also no longer throws away a box you drew but have not commented on yet.
A plan opens with "What we need from you" and a Click here to answer button beside it. The client clicks it and gets the same one-at-a-time pop-up, without hunting for the panel. The questions on the page are one line each now, with the reasoning behind each one shown in the pop-up when they reach it, so the block reads as a short list of questions rather than a wall of text.
03Planning
A Full Workflow task on a plan now shows all five stages underneath it, with a date and a sentence each: Production, Internal revisions and QA, Your review, Your revisions and QA, Sign-off. Before this the client saw "we build a thing" and "we revise it" and neither QA round, so we were hiding work we actually do for them. The dates come from the plan's own markup, the same markup the import reads, so the plan and the task can never disagree and nobody types a date twice. When a plan is re-stated later in the month, finished steps show as Done and the current one as In progress.
The header is the company name and the title, instead of saying the same thing three ways. Each initiative carries its own Due date as a chip on its header, rather than a strip of tiles above the work competing with it. The strategy tab drops from eight sections to four: if a section can be answered by reading the work tab, it is not strategy. And the audience block is stacked rather than squeezed into a narrow label column.
A screenshot to model, a photo to cut out, a logo, a policy page: a plan can now list them on the task, and they arrive at the bottom of the task description on import. Anything without a link is marked "To obtain", which is the half that matters - it turns a task that would stall silently halfway through into one whose first step is obvious.
04Planning
Every task now shows a Workflow row - Full Workflow with all five steps and their dates, or Simple task - so a step with a mistyped name or date, which the import drops without a word, is visible as Ignored instead of just missing. The description is shown exactly as it will be stored, with the author's own line breaks and nothing added, because a prettier preview was promising formatting the import cannot deliver. Checklist items are listed rather than counted, and the two columns are now even, so the half you are checking against is not a third of the width.
It used to show an owner, dates, a description and a checklist, all describing a task that is never going to exist - which made the densest block in the whole view the one that creates nothing. It now shows the reason it is not being imported, and stops.
If a task said it works on or references a task the plan marks as not imported, the link was silently dropped: the plan said one thing and the created task said nothing. The preview now says so, and points you at the fix.
01Planning
A task the plan marks as Full Workflow now shows "Full Workflow, 5 steps dated" on its line in the preview, so you can see what you are about to create before you click Import, not after.
The plan Status generates for an initiative now carries Full Workflow and each step's planned date, so importing that plan somewhere else recreates the task the way it actually is, rather than as a plain task.
The blueprint plan now explains the two attributes that enrol a task and date its steps, and the sample plan uses them on the one task that genuinely goes through the client - the page design and copy - so it is clear this is chosen per task, by the process the work needs, rather than switched on for everything.
01Training
Training → Managing Projects brings together four modules, recordings, a reusable notes template, interactive initiative examples, and a separate 20-question assessment. Practice controls do not affect live tasks; assessment results stay on the page.
A clearer way to plan and read a task that goes all the way through the client: the steps it has to pass, when each one is due, and where it has got to.
01Initiatives
Turn Full Workflow on in a task's header and five steps appear underneath it: Initial production, Internal refinement & QA, Client review, Client revisions & re-check, and Client approval & completion. Each one has its own planned date, edited by clicking the date, and a progress mark you set by clicking the circle on the left: Not started, In progress or Completed. The steps are not tasks — they never show in anyone's task list, in the counts or in the KPIs. Leave the toggle off and the task works exactly as it always has, QA included: this chooses the process a task follows, not whether it can be checked.
A QA assignment is still a real task with its own owner and deadline — it is now shown under the work it checks instead of as another line in the list, so you read "QA round 2" beneath Internal refinement & QA rather than hunting for it. Checks of changes the client asked for appear under Client revisions & re-check. The same task is shown once and counted once.
Submitting for QA now names the check by its round, with the number first so it still reads in a narrow list. The round is allocated when the task is created, so two people submitting at the same moment can never get the same number.
Finishing a QA task now asks for the result first - passed and ready to send, or sent back for revisions, a functionality fix or out of spec - and then asks the question that result calls for: "What needs to change?" on a send-back, or "What did you check?" on a pass. What you write is posted onto the task you checked, and on a send-back it is also recorded as the reason it went back, so there is no second trip to write the same thing again. Finishing the check completes your QA task, not the work: a round sent back leaves the task with its owner and reopens the QA step.
The task list now carries the date itself, colour-coded so a whole initiative reads at a glance: green when there is more than a day, amber for today or tomorrow, red once it is overdue (with the date it missed). It takes the place of the old plain "Overdue" tag, so the date is always in the same spot whether the news is good or bad. A task handed over on time and sitting in QA is never red - that was never the owner's miss - and linked QA rounds carry the same chip with their own deadline.
The task list on an initiative now runs earliest due date first, with undated tasks last, so what is next is at the top. The workflow steps under a task always stay in process order.
A plan can mark a task as Full Workflow and give each step its planned date, so importing the plan lands the task ready to work. Automation templates carry the same setting, with each step's date as a day offset like every other date on a template. Re-importing a plan never overwrites dates or progress you have set by hand.
01Communication
For a sub-company (Northpoint under SGA Training, for example), the initiative list in a thread's link picker came up empty, and an initiative's Communication tab found none of that company's threads to link. Both pickers now look at the sub-company as well as its parent, so the link works from either side.
01Working a task
The button copies /brief with the task's id instead of /start with its name, so the session downloads the task's starter kit and works from that: it proposes what you are building, asks its questions, builds, and finishes with /submit-brief. Matching by id means it can never pick up the wrong task. /brief and /submit-brief are now in every client repo; /start and /submit still work as before.
01Communication
Training companies are kept out of the company-wide inbox on purpose, but that rule also emptied the email list on the training company's own Communication tab: Northpoint's two client emails listed as threads with nothing in them. Its own tab now shows its mail; the company-wide inbox still leaves it out.
02Working a task
A /brief session wrote its monthly plan from scratch because its kit had no plan template: the first kit test only had them because they had been attached to that task by hand. Every kit now includes the monthly and initiative plan templates with their markup guides, and says a plan is always built from its template, so it imports into Status.
A /brief session asked whether new work should go in Status or Asana, because the kit never said. It now says: never directly and never in Asana, but in the plan, which you import in Status once it is approved. Anything the client owes us is a question in "What we need from you", not a task. And when a plan is one of the deliverables, it is built and agreed first, because it sets the direction for everything else.
01Working a task
The task and initiative details a working session downloads named the parent company for any sub-company's work: Northpoint's kit said SGA Training and had no web address, and ChartPro's work read as SBMF. It now names the sub-company, with its own web address and context notes, and still lists the parent (whose notes it keeps too).
The kit's file list still carried the vendor line telling you to put the task manifest (sga-task.json) in "your submission zip", so the first test session went looking for a file that is not in the internal kit. The line is gone from the internal kit and stays in the vendor one.
Before building anything, a /brief session now proposes the deliverables it thinks the task needs (the monthly plan, a landing page, three ad creatives), each with a suggested name and the folder it would go in, and asks you to confirm, rename, add or remove them. The names you settle on become the folders. Its other questions come in the same message.
A transcript with its own heading ("Client meeting transcript") showed that heading as a section of the brief, in the middle of everything else. Its headings now sit inside the meeting they belong to, in both the starter kit and the brief.
The starter kit is what worked best, on a client page and on a monthly plan, so /brief now downloads a kit too. It carries the same brief, build guide, files, templates and audits our vendors get. Instead of zipping the work up, its steps say exactly where the work goes in the company repo (worked out from the initiative and anything already made), how to commit it so the site deploys, and how to finish: register the deliverable, offer the client review and post the work report. Everything lives in the kit, so the repo itself stays small and improving the steps is a change here, not in every client repo.
01Working a task
An initiative's slug is the readable name of its folder and of its client links (crestwell.sga.team/initiatives/crestwell-rebrand/...). The Asana sync used to make it, so since leaving Asana in July no new initiative had one, and every working session invented its own folder name. Every initiative now gets one when it is created, made from its name, and it never changes when the initiative is renamed, because client links depend on it. The ones that were missing are filled in, keeping the folder a deliverable already lives in wherever there is one, so no link moves.
01Plans
A parent company's monthly plan often covers its sub-companies too (SBMF's holds ChartPro and Innovation Institute work). Each initiative can now name its company, and it is filed under that company with all its tasks. The import preview shows the company beside every initiative, and a company that is not the parent or one of its sub-companies is flagged and left out rather than filed somewhere wrong. The plan template and its guide show how.
01Plans
A monthly plan belongs to the parent company and is shared with its sub-companies, but importing it from a sub-company's page filed the new initiatives under the parent, so they did not show on the sub-company's page. Found importing Northpoint's September plan, which put all three initiatives under SGA Training. The import now files them under the sub-company whose page you ran it from.
A monthly plan's preview said "Import 14 initiatives" when it meant 3 initiatives and 11 tasks. It now says exactly that.
A plan written with proper typography (curly quotes, apostrophes, a middle dot, accented letters) imported those characters as HTML code, so a task could arrive named "Put both pages live on Northpoint’s server". The plan was fine; the importer only understood a handful of these codes. It now reads them the way a browser does, in task names, descriptions, checklists and initiative names alike.
01Working a task
Attaching a meeting to a task is a decision to share it, so the whole transcript now goes to a vendor or a public test as well: it folds out under Files on their task page and it is in their starter kit. Until now they only ever got the meeting excerpts, which meant a kit built from a "process this meeting" task arrived without the meeting. The attach panel says so when you pick a meeting, so you can choose what leaves SGA.
Add link now has a fourth choice, A template: pick the monthly plan, the initiative plan or another canonical template and it is attached as a link to the live version, so it is always current. A starter kit downloads it with the rest of the task's files.
A link whose name had punctuation in it (a dash, a dot) was saved in the starter kit under a name the Mac's command-line unzip could not extract. Copies are now named with plain letters and hyphens, and an attached template is simply called "Monthly plan template".
The full-view page only listed files attached to the task itself, while the downloaded brief also listed the initiative's. Reference material is usually attached to the initiative, so the page now shows both.
01Working a task
When the parts of a client call were linked to an initiative (rather than the whole transcript attached), the brief left them out and said no meeting was attached, so a session never saw what the client said or what we promised. Found on Crestwell, whose task points at the Sep 3 call. The brief now carries those excerpts word for word, and skips any that duplicate a transcript attached in full.
A session reading the brief used to meet a block of ids before it knew what it was doing. It now opens with what you are producing and who it is for (the client should be impressed, feel listened to, and get what they asked for), then how the work goes: recap and ask, build the first draft, revise it together over several rounds, then submit. The same quality bar the test projects use is now in every deliverable brief, from one shared source. The ids moved further down into a "copy these exactly" block.
The test projects came out so well largely because of their build guide and their step-by-step instructions: build the first draft, stop, show it at phone, tablet and laptop widths, then revise round after round until the person says the client would be thrilled. The brief now carries that same build guide (copy with no AI tells, the client's brand not your taste, how to ask the client a question on the page, the page template) and the same two steps, read from the same source as the starter kit, so an improvement to one reaches both. The parts about a candidate's hand-in (the zip, the conversation record) stay out.
The brief now carries what we mean by an initiative, a task, a deliverable, a version, an initiative plan and a monthly plan, so a session uses them the way the team does. After that comes a short list of every section and what it is for, plus what is not there ("no meeting is attached"), so nobody goes looking for something that does not exist.
02Creating work
An initiative is one outcome for a client, named the way you would say it to them in a meeting: "the graphics for the healthcare conference". It can hold several deliverables, as long as they serve that one outcome. The New initiative and Add a task pop-ups now read their definitions from the same place the brief does, so the two can never say different things.
01Working a task
Checking the brief against Classic, which has 30 initiatives, it said the client had none and that "anything the meeting describes is new work" — which would have led a session to create duplicates of work already underway. It only counted a sub-company's initiatives correctly. It now lists what exists, active first, and warns that a duplicate splits the history of one piece of work in two.
Classic has a September plan, registered as a deliverable, that was never attached to September — so the records said there was no plan and a session would have built a second one. The brief now spots a plan filed under that month's folder and says: it exists, do not create another, and it needs attaching.
The brief now carries communication linked to the task's initiative and nothing else: the conversation so far on those threads, and any client message on them still waiting for a reply, in full. It used to add every other unanswered thread the client had, and to fall back to unlinked threads when none were linked. If a conversation belongs to a piece of work, link the thread to the initiative and it will be in the brief.
Every deliverable brief used to carry the plan material: the plan and report folders, the mandatory plan dates, the template list, and, for a month with no plan, "the monthly plan is the first document". On a task to edit an existing Canva design, that pushed a session toward a document nobody asked for. Plan material now appears only on a task filed as a plan or a report.
Rather than guess whether a task involves planning, the brief now reads the initiative's plan and this month's plan and says what it found. If the task is on the initiative plan and the initiative is on the monthly plan, it says so and asks nothing. If either is missing, or there is no plan at all, the session asks you in its recap: "This task is not on the plan. Does it need to be added?" or "This initiative does not have a plan. Does it need one?" It never creates or changes a plan unless you say yes, and only then fetches the plan rules.
The brief was including every unanswered message the client had — 87 of them for Classic, two-thirds of the whole document — on a Brand Book task that one thread was about. Messages on threads linked to this work are still given in full; everything else is a one-line list, so a session can spot one that matters without reading all of them, and is told not to reply to those as part of this task.
The list of people a plan can assign work to included a vendor account, and the plan importer would have accepted a vendor as an owner. Vendors are invited to do one task and are never assigned work, so the list is now team members only — for the brief, the importer and every task's assignable list.
The brief's list of unanswered client mail was picking up the team's own notes, work-report notices and submission receipts, which live on the same threads. On Classic that was every one of 202 "unanswered" messages and not a single real client email. It now counts only inbound client messages that are not internal and not answered, the same way the Communication score always has.
A task marked Completed now opens with a note not to redo it. And a new "Already produced" section lists the deliverables this task made and the others on its initiative, so building one again becomes a new version of it rather than a second copy.
A session cannot open a Canva design or a Google Drive file on its own, and used to either waste a step failing to fetch it or quietly work without it. The brief now lists those links and says to ask: either for permission to open them through the Chrome connector, which uses your own logged-in browser, or for an export dropped in the inbox.
A task on the company's own material — brand guidelines, the design system, company context — now gets where those live and how each is versioned, instead of the table of plan and report folders, which never applied to it.
01Working a task
A task done on a client's live site or in a tool like GoHighLevel is prepared by the session and carried out by the person, and the session must never change a live site itself. The brief tells a session not to read the house rules, so that rule was missing from it entirely. It now opens with a helper-only notice for production and manual tasks, above everything else, and tells the session there is no document to build and the outcome is a work report.
The brief was first shaped around a planning task. It now changes with the kind of work: a page or document gets the review script, the branch-per-deliverable rule, keeping its brief.md current and never renaming a folder; company material gets the placement step; field work gets the helper-only notice and no document instructions at all. Every kind gets the closing checks: sort the inbox, capture what was learned, and commit as yourself.
Copy and design must still come from the client's own brand and voice, never generic defaults. The brief now says where that material lives and to read the specific files the work needs, only when the work involves copy or design, rather than reading a client's whole folder of context on every task.
The context captured on a client, an initiative or a deliverable is now in the brief, most specific first. And when a client's email already provides something, the brief says to use it: a test run had asked a client to resend legal wording they had already emailed word for word.
01Working a task
A session working a task can now fetch one document that is genuinely everything: the task, what already exists for that client, the client's unanswered mail, the rules, where each kind of document goes, and any meeting transcript in full. It reads nothing else — no house rules, no walking the company folders, no hunting the repo. Measured on a real task: the old way took about an hour, this took 13 minutes and produced a better plan, because the cost was never how much there was to read, it was the number of times it had to stop and fetch or ask.
The brief states whether a monthly plan exists for this month, which initiatives the client already has, what has been delivered, and which emails from the client are still unanswered. In the test run, the old path proposed the wrong kind of document and needed a correction, which cost a full round trip; this states the answer up front. Client emails are framed as requirements rather than background, because one of them carried compliance text that had to appear on the pages and the hour-long run missed it entirely.
Attachments and fetchable links come as a single archive, so a task with eight files costs one call instead of eight. Nothing to drag anywhere: the session fetches it itself.
01Plans
A plan that named a task "Apply Dana's revisions and freeze the copy" imported it as "Apply Dana". The markup reader treated either kind of quote as the end of a value, so it stopped at the apostrophe - silently, with no warning, and apostrophes are everywhere in real names ("the client's approval", "don't send yet"). A value now ends at the same quote that opened it, so the other kind is legal inside, and written entities are decoded so a title never arrives carrying '. Found while checking a real plan against the importer.
01Clients
A client page works out its own parent from the company list, and that list now leaves training companies out. So a training company whose parent is also a training company could not find it, and "+ New initiative" filed the initiative against the sub-company itself instead of the parent. That left the same company in both the client and sub-company columns, which made the initiative invisible to the company API a repo session reads: a session saw a sibling company's initiative and not the one just created. The page now loads the full company graph, and the create route normalises the pair whatever it is sent, so the owning company is always the parent and a company can never be both.
01Plans
Plans written in a company repo were not following the template, and this was why: the template was only ever mentioned to a task tagged Plan or Report. The real flow does not have one — an ordinary "Process this meeting" task turns out to produce a monthly plan plus a plan per initiative, and that task is correctly not tagged as a plan. On production, of the tasks whose title names a report or a plan, 30 were tagged Manual or Working and only 4 were tagged Report or Plan. Every task brief now carries the canonical template for each document we produce, with the live sample to build from, the guide, and which markup it must carry to be importable. The house rules say the same thing, keyed off what you are producing rather than what the task is called.
A plan task was told every plan goes in plans/<month>/vN — so an INITIATIVE plan, which belongs under its own initiative, was being filed in the monthly plan folder. Placement now comes from the document rather than the task: a monthly plan goes in plans/<month>/vN, a monthly report in reports/<month>/vN, and an initiative plan in initiatives/<initiative>/<deliverable>/vN. Every task brief lists the home for each document alongside its template, which matters because the task that produces a plan is usually not a plan task at all.
Name a task "Write the monthly report" and file it as Manual, and the wizard now points out that Working repository → A Report is what hands the session the template and the submit steps. It is a hint, not a block: a task that only leads to a plan is perfectly normal.
02Plans
Importing a monthly plan or an initiative plan now opens a preview that writes nothing: what would be created, what is already here, which initiative dates would move to match the plan, and every place the plan disagrees with what is already in the app. You import on a second click. Before this, the button wrote to the database on the first click, so a plan with wrong markup or an unknown owner email landed before anyone could look at it.
An import adds. It does not rewrite a name, a title, a description or a checklist, and it does not reassign an owner: where the plan differs, the preview lists it as "you would need to change this yourself". The one exception is an initiative's dates, which move to match the plan because the plan is the schedule, and the preview shows exactly which ones will move. A task's dates are reported but never moved, because a task due date feeds the on-time score and moving one is meant to be deliberate.
Importing now comments on the initiative saying what it did: what was created, what was already there, and that nothing written was overwritten. A re-import says so too. It is no longer only a toast that disappears.
An owner email that is not on the team list used to import the task unassigned with no message at all. The preview now warns about that, about a "where is this done" value that is not recognised, about a date that is not in YYYY-MM-DD form, and about an item with no owner in the plan.
A task you deleted counted as "already imported", so it could never come back from the plan, and a deleted initiative was reused — meaning a re-import wrote fresh tasks and plan dates into a row sitting in the recycle bin. Both now ignore deleted work, so a deleted initiative is recreated from the plan instead.
01Communication
A client's Communication tab offered an Unmatched view, on both Threads and History, which could only ever read zero: an unmatched thread is one we could not tie to a client, so by definition it never appears under one. The tile is gone when the board is locked to a client, and a link carrying ?view=unmatched now lands on Open threads instead of an empty screen. The global Communication hub is unchanged.
02Navigation
The Submit page published a deliverable to files.sga.team, and that host no longer answers at all, so the flow was a dead end. It is off the sidebar. Work reaches us two ways now, both unaffected: from a company repo, which submits a link, or as a vendor / public-test hand-in, which arrives as an attachment. Registering a deliverable from a URL is untouched. Separately noted on the backlog: 68 older deliverables point at that dead host, 22 of them on client review pages.
03Tasks
Browsing the company's folder when adding a link went over SFTP, which no longer works, so every attempt to pick a company file failed. The source is removed: a file on the company site is a URL like any other, so paste it. "Add link" now offers a registered deliverable, any URL, or a meeting. The create wizard's Files step says so, and mentions meetings.
04Clients
"+ New initiative" was hidden entirely on any company that has no Asana project, because the only way the form could work out which company you were on was that project id. Nothing about creating an initiative has touched Asana for a long time (it writes straight to our own database), so the button now identifies the company by our own id and shows up everywhere. Two others of the same kind went with it: the "Follow-up of" picker was offering an empty list of sibling tasks on such a company, and the create form's deliverable picker had no way to ask by company.
05Tasks
Under Files on a task or an initiative, "Add link" has a fourth source: a meeting. Pick one of the client's meetings and its whole transcript is attached, shown in Files with a 🎙 and linking to the meeting page. It also travels into the task's full view and the brief a working repo downloads, under "Meeting transcripts", in full — so whoever builds the work can read what was actually said rather than trusting a summary. Nothing is copied: edit the transcript on the meeting and every brief carrying it updates. Outsiders keep the enriched meeting snippets and never see a raw transcript. Attaching to an initiative reaches every task under it, and initiative files now reach the downloaded context at all, which they never did before.
06Clients
A client page has a Meetings tab, next to Communication, listing every meeting logged for that client and its sub-companies, newest first, with the same badges the Comms Hub shows (questions to answer, awaiting enrichment, a recording to watch, restricted). Click one to open its transcript, recording and the work it produced, and log a new meeting straight from the tab. Finding a client's call no longer means scrolling the whole company list.
01Clients
Adding or editing a company now has a "Training company" tick box. A training company works exactly like a real one on its own pages (initiatives, tasks, meetings, its Communications tab, even its own scorecard, so you can watch your score move), and is kept out of everything company-wide: the three KPIs and their drill-downs, the Dashboard and Company view, the daily rundown, the Communications queue, history and open requests, late work, out of spec, completed work, and any automation or auto-responder aimed at "all clients". Its name carries a Training badge on its page and in the client list, so you always know which you are in. Training exercises normally sit as sub-companies under one training parent.
An archived company was still offered as a destination when routing a meeting or a thread, and still counted as a card in the rundown's activity roll-up. Both now skip archived companies, alongside training ones.
01Tasks
The outsider page now opens with the brief and the checklist, then folds the project background, the files (with the manifest), the meeting context and the complete build guide into one collapsed "Full context and reference" group, then "How to start this project", then "Submit your work". The group starts closed, even when a link points into it, and opens when the reader clicks it or follows a link from the steps. The Markdown version of the page, and so the kit's brief, follow the same order. The "What you hand back" card is gone; the manifest is a file under Files. On a public test the comments section is hidden entirely.
Understand the assignment; open the starter kit with your AI tool; create the initial build in a submission/ folder; direct the work to wow the client (the central step: open the pages yourself, read every line, look at every visual, several rounds, versions kept in v1/, v2/); run and save three audits (client request and context, brand and supplied materials, build and submission requirements); record the conversation as an HTML deliverable with a review note and any deliberate exceptions; package and submit. A test states once that there is no one to ask and how to record assumptions; a vendor is told to ask in the comments. A task not built with an AI tool gets five short steps ending in a note hand-in.
Candidates and vendors no longer hand back the whole kit. They build in submission/ inside it, with sga-task.json unchanged and one folder per deliverable (each with index.html and its own assets/, earlier drafts in v1/, v2/), and zip only the contents of that folder. The conversation with the AI tool is itself an HTML deliverable in the zip: tool and model at the top, every exchange labelled by who said it, versions linked, the three saved audit reports and a short review note. The build guide, the kit's agent instructions and the kit itself (page template, conversation template, audit-report template) all say the same thing.
A zip that is really the whole kit, that opens to an enclosing folder, that lacks the manifest, that has stray files at the root, a deliverable folder without index.html, or no conversation deliverable is refused with a message saying exactly what to fix. The review task created for the owner now lists the deliverable folders, how many archived versions each has, the conversation deliverable and the number of saved audit reports, plus warnings, so the triage is done before you open the zip.
The task page and the Markdown brief resolved a task's dependencies only through the old Asana ids, so a follow-up created since the Asana exit (9 in 10 of them) showed "Depends on: None" on its full view and gave a Claude Code session none of the parent's context. They now resolve through our own links, with the parent's description, comments, files and deliverables.
On a public test each person hands in once. The submit page says so, and after the hand-in it shows what was submitted and when instead of a form. Vendors still hand in again after each review round.
01Communication
Status reads a connected mailbox in full, so until now anything arriving in it could end up on the Communication board. The ignore list has a third kind of rule, Private address. Unlike Domain and Email, which only look at who the mail came from, a private address is matched against everyone on the message, so nothing sent to it or from it is ever stored, in either direction. It never reaches the board, search, the unmatched queue or the AI analysis.
This is the point of it: a dedicated address, say one the team sends invoices to, can be an alias on a mailbox Status reads, and what is sent to it stays between the sender and the person whose mailbox it is. No second mailbox and no second subscription. It catches mail that was blind-copied to the address as well, not only mail openly addressed to it, because that is exactly how an alias usually arrives.
A rule governs what gets pulled in, so it cannot reach backwards: mail that arrived before you added it was already stored and stayed visible, which is a nasty surprise when the point of the rule was privacy. A private address now shows how many stored messages predate it, right under the rule, with a Remove them button. It asks once, with the real number, then deletes them for good, along with any conversation left with nothing in it.
The three scopes did not explain themselves, and the difference matters. The panel now spells out that Domain and Email stop mail from a sender while Private address silences an address in both directions, that a rule only applies to mail arriving from now on, and warns against pointing a private-address rule at a team member: because it matches everyone on the message, it would silence every conversation that person is copied on.
01Reviews
Opening a review while signed in to Status now identifies you from your session before anything else is considered, and it tries twice before giving up in case the first check hiccups. Only if there is genuinely no session does it fall back to the name and email saved on your device, and only if there is none of that does it ask.
If the review asks who you are, you can no longer answer with a strategicgrowtharchitect.com address — it tells you to sign in instead. Typing it never granted team access, but it did let feedback be filed under a real teammate’s name as though it came from the client, which reads as true and is not. An SGA address left saved on a browser from an earlier visit is now discarded for the same reason. The only way to be internal on a review is to actually be signed in.
Review links are public by design, so the pages behind them accept whatever identity is sent. Comments, replies, approvals and answered requests now refuse an SGA address unless the request carries a real Status session. Being unable to type it into the form is the polite half; this is the half that actually holds.
01Communications
The scheduled poll looks at the last day of Google Meet calls, which is right for keeping up. When a meeting from further back needs pulling in — after a spell where transcription was off, or a run of calls that predates a change — the ingest can now be pointed at a wider window on request. Re-running it is safe at any width: a meeting that is already filed cannot be filed twice, so the worst a wide sweep costs is time. Nothing changes about the normal poll.
01Settings
It hid them from the team roster and nothing more. Sign-in only ever checked whether the address was on an SGA domain, so somebody who had left kept full access to Status for as long as their Google account existed — switching that account off was the only real lock. Sign-in now refuses an archived member and tells them plainly that their access was removed.
At the bottom of a person’s panel in Settings there is now Archive member. It blocks their sign-in, records when they left, and takes them out of the team roster, assignee lists and every current view. Nothing is deleted: their tasks, comments and history stay exactly as they are, and every history line still names them, because those lines record the name as it was at the time. Archived people are listed separately at the bottom of the member picker, greyed, so you can still read their record or bring them back.
Archiving releases the login address. Give it to a new starter and they get their own record and their own onboarding, with none of the previous person’s history attached — the email is a way of signing in, not a permanent identity. The old address is kept on the archived record so you can see what it was. If you rehire someone, Restore puts their address back when it is still free, and tells you who has it when it is not.
Archiving refuses while the person still has open tasks, and lists exactly which ones with links so you can move them. Work assigned to somebody who has gone is how it gets quietly forgotten.
02Settings
Permissions were their own section at the top of the page, above the team members list. So clicking a name jumped you back to the top, looking at a different person’s permissions, with a second member picker to find your way back. Team members is now the first section, and a person’s permissions sit inside their own panel under their email connection — pick them once, and everything about them is in front of you: details, mailbox, what they can see and do, and archiving.
01Communications
Adding a meeting topic to an initiative showed a tick, but the tick only lived in your browser. Come back to the meeting the next day and it was gone, so there was no way to tell what you had already filed — and pressing the button again quietly put a second copy of the same context on the initiative. Filing is now recorded on the meeting itself. If you pick an initiative that already has this topic, it says so, tells you when it was added, and asks whether you meant it, rather than silently duplicating. Adding one topic to several different initiatives is still fine; only the same pairing is stopped.
Each topic now lists what it has been added to, with the date and the person, and a link straight to the filed context. That record survives reloads and is visible to whoever picks the meeting up next.
At the top of the topics there is now a line reading how much of the meeting has been dealt with: how many action items are ticked, and how many topics have been filed to an initiative. A half-processed meeting used to look exactly like an untouched one, which is the main reason work got done twice.
01Communications
A conversation’s open items were one merged list with a small owner tag that was easy to miss. They are now two: "Still open · us" and "Waiting on them". The second only appears when there is something in it. This matters because the two are not the same kind of thing — an item waiting on the client is not work we are failing to do, it is the accurate state of the conversation, and we cannot move it. Only our side counts towards a conversation needing our attention, which was already true but impossible to see.
When the AI read a conversation and listed what was still open, it had to decide whether each item was ours or the client’s — and it was never told who we are. It judged from the wording alone, so a client promising to send us something ("I’ll get you the logo Monday") often came back as a job on our list. It is now given the team and our email addresses, plus which side actually sent each message, and told to ask who has to DO the thing rather than who is talking about it. A promise made in a client’s email belongs to them; a request made in it belongs to us. Anything genuinely unclear still lands on our side, because a job wrongly on our list gets noticed and cleared, while a real obligation wrongly parked on the client is silently dropped.
Because the two sides are now separate, a mis-filed item stands out instead of hiding in a merged list. Tick it off where it sits and the next enrichment picks up the correction. Existing conversations keep their current split until they are enriched again.
01Communications
A Meet call that was recorded as well as transcribed now brings its recording with it. It sits on the meeting page under Recording: press Watch here and it plays in place, or open it in Drive if you would rather. No new Google permission was needed — it uses the same access that already fetches the transcript.
On the Meetings list, a call whose recording we hold now carries a 🎥 Video tag next to the 🔒 Restricted one, so you can see at a glance which meetings can be watched back without opening each one.
Google finishes writing a recording on a different clock from the transcript, so a meeting usually files itself before the video exists. Status keeps checking and the recording appears on the page when it is ready, normally within the hour. It keeps checking regardless of how old the meeting is, so recordings for calls that happened before this existed get picked up too. Nothing for you to do, and a meeting that was transcribed but never recorded simply stops being asked about after a few tries and never shows the section.
The recording is played straight from Drive using your own Google account, so nothing is copied anywhere and a recording can never be seen by someone who would not have been able to open it in Drive. It is deliberately kept off the client recap page — the recording is for the team.
01Work
Beside Work and Communication there is now History: a dated, attributed record of everything that has happened to an initiative and to its tasks. Tasks created, tasks completed, work moving into QA, stage moves, status changes, due dates set and moved, comments, deliverables sent for review — each line says who did it and when. It rolls the tasks up on purpose, because that is where almost everything actually happens; each line names the task it belongs to.
At the bottom of any task pop-up there is a History section. Open it and you get the same record for that one task: every status move with the note that came with it, every due-date change with the reason given, every comment. It is closed by default and loads nothing until you open it, so it never slows the pop-up down.
Almost all of this was already being recorded, it just was not being read anywhere. Rather than starting an empty log, the history is assembled from what has been captured all along, so an initiative that has been running since July opens with its real history rather than a blank page.
Task due dates have always been recorded when they change. Initiative stage dates were not, so there was nothing to show. They are now, with who moved them and any reason given. This one starts from today — changes made before this cannot be recovered.
01Communications
When a client leaves feedback in the review tool it is filed onto the initiative’s own conversation, and that conversation is marked internal because it also carries the team’s working notes. One flag was doing two jobs, and the result was that a client could leave twenty-two comments on a deliverable and no number anywhere counted it. The dashboard read "3 awaiting our reply" while a single client’s own card read "9 open", and both were reading the same data. Client messages now count wherever they live, including there. Your own internal notes still never count, wherever they sit — that judgement is made per message, not per conversation, which is what went wrong.
A client working through version 3 of a mockup and leaving ten comments has given you one piece of feedback that needs one reply, so it is graded once and cleared once. Come back to the same version a week later and that is a new round, counted again — so a client waiting on a second pass can never quietly read as already handled. This was already true for one sitting; it now follows the deliverable version too.
The "needs a timeline" warning was looking for a date scribbled on the conversation rather than at the initiative’s own dates, which meant the healthy state — real dates set, nothing outstanding — triggered it. It was firing on every single linked conversation on the board, 168 out of 168, which is the same as telling you nothing. It now reads the initiative’s four stage dates and only speaks up when none of them is set. Launch stays optional; any one date is enough.
The Inbox said 58 needed attention while the board said 2. It was the only place in the platform counting messages on archived and ignored conversations, and counting every review annotation separately. It now counts what actually needs doing. Nothing has been hidden: the feed below still shows every message, archived and ignored mail included, and it is all still searchable — only the number changed.
Every logged conversation was filed as an unanswered client message, so writing down a call you had already finished put your own note into the awaiting-our-reply queue and onto the Communication score. Filing a slice of a meeting onto an initiative did the same thing. Logging is now a record by default, with a tick-box on the form for the case where the client really is waiting on you. Existing notes have been corrected.
A parent company and the companies under it are the same client and usually the same contact, so their conversations are one relationship. The client card already counted them together; the Communication tile on the client header did not, so the two could disagree for any client with sub-companies. They now both count the whole relationship.
02Communications
Communication history was showing oldest first, which was hard to spot because the cards carried no date at all. Every card now shows how long ago the message arrived — "3d ago", "2w ago" — with the exact date and time on hover, the same way the Inbox says it, and the list runs strictly newest first. Excused messages stay in date order too rather than being pushed to the bottom; the grey styling and the chip already tell you what they are.
The page opens on this month, which is the month the Communication KPI is actually scoring, and there is now a row of periods along the top: the last six months one by one, plus year to date. Each one is its own link, so you can send someone a particular month.
Every round of feedback on one piece of work shared the same name, so Communication history showed six rows in a row all reading "MGMA Handout" with no way to tell them apart. Each row now names the deliverable and version it is feedback on — "MGMA Sales Collateral v5", "v4", "v3" — which is also exactly what each row is grouped and scored by, so the list explains its own shape. The same name now shows on the client card.
The Recent communication list on a client card only ever read email and Asana messages, so now that client review feedback appears there it had no sender to show and the row read blank. Review feedback is client communication, so it is read like any other message — it shows the client who left it, and it counts as recent activity on that client.
Anything past about two months old was being described in weeks, so a message from the spring read as "38w ago", which is arithmetic rather than a sense of time. It now steps up to months and then years. This applies everywhere relative times are shown, including the Inbox.
01Communications
There were seven tiles across the top of the Comms Hub and the last one wrapped onto its own line. Urgent was the one to lose: nothing ever set it automatically, and in the whole history of the board not a single thread had been flagged urgent by hand, so it was a tile permanently reading zero while pushing a real number out of sight. You can still mark a thread urgent on the thread itself, and it still shows a red dot and an Urgent badge on the list — it just no longer has a tile of its own. Old links that pointed at the Urgent view now open the full list instead of breaking.
01Timing & Quality
Removing a penalty used to make the row vanish, and there was no way to get it back from the page. Excused rows now stay on the list, greyed and at the bottom, showing who excused them and why, with a Restore button that puts the penalty back. Late work and Out of spec also get the filter chips and the 50-a-page list, so all three KPI drill-downs now look and behave the same.
On time, late, and excused, as percentages of the dated work finished this month - and for initiatives, how many of the month's graded initiatives hit their stage dates. You can see what the score actually is without counting rows.
02Communication
The Communication number on the dashboard, the scoreboard and every client card used to show a dash when there was nothing to grade - no messages this month, or every message excused. Quality and Timing have always shown 100% in that situation ("nothing sent yet", "nothing due yet"), and Communication was the odd one out, so a quiet client looked like a broken tile. It now reads 100% as well, and the line under it still says there were no messages, so a clean score cannot be mistaken for traffic that was handled.
Communication history now works the way Late work does. Tick any number of messages, add a reason if you want one, and press Excuse: they stop counting against the score, exactly as removing a penalty does on Late work - excuse every miss and the number goes back to 100%. It is for the ones that genuinely did not need a reply and were simply never marked, and for misses that were not ours to make. Every excused message stays on the page, greyed, showing who excused it and why, and Restore puts it back. Only someone who can remove KPI penalties sees the checkboxes, so nobody can clear their own. Excusing changes the score only: a conversation still waiting on us is still waiting on us.
Four chips across the top of the list: Over a business day (the misses behind the KPI), Over 4 working hours, Within a day, and Excused, each with a count. The four-hour measure is the standard we actually aim at - back to the client inside four hours of 9 to 5 Central, Monday to Friday - so a message that lands at 4:30pm has half an hour that afternoon and then the next morning before it is over. It is a target and a filter, not a penalty: it does not change the KPI.
The page now leads with four figures rather than one: within a business day, over a business day, within four working hours, and how much has been excused. The list pages 50 messages at a time instead of running on forever, and excused messages sink to the bottom where they no longer crowd out the ones that need reading.
01Communications
Sending from a mailbox that was not your own put YOUR name on THEIR address, so a client could receive an email from, say, "Chad Conger" at a colleague's address, or at info@. The name now follows the mailbox: send from a colleague's and the client sees their name, send from your own and they see yours. Who actually pressed send is still recorded on the thread, so nothing is lost internally.
A shared inbox has no one person behind it, so it now goes out as Strategic Growth Architect rather than borrowing the name of whoever happened to send it. That is the same sender our automatic replies already use, so a client who gets an auto-reply and then a real reply sees one consistent sender instead of two different ones.
The list of addresses you can send from now shows the actual name that will appear on the email, so you can check it before sending rather than finding out afterwards.
01Behind the scenes
Nothing changes in the app. The one outstanding disaster-recovery gap, a partial off-Vercel copy of the environment secrets, is now recorded on the backlog with what is missing and the order to fix it.
01Behind the scenes
Nothing changes in the app. The disaster-recovery runbook now lists every secret and where a fresh one comes from, records that most of them cannot be pulled back out of Vercel, and carries a rule that keeps it updated whenever anything affecting a rebuild changes.
01Behind the scenes
Nothing changes in the app. The file used to rebuild the database from scratch had drifted badly: it described 24 tables while the real database has 60, so anything built from it would have been missing Meetings, presence, automations, roles, reviews and more. The other 36 are now in it, generated from the live database rather than written out by hand.
01Your account
It is back on: leave Status alone for 30 minutes and you are signed out, with no pop-up and no sound. Yesterday's version could sign you out within seconds of arriving while you were still working, because it was deciding you had gone by reading your status, which briefly flickers while the page is loading. It now goes by how long it has actually been since you touched anything, which cannot flicker. Tested by using it normally for several minutes without being interrupted, then leaving it alone and being signed out on the dot.
With the pop-up turned off, nothing was putting you back to Available once you had been marked Away, so you could be sitting there working while the team saw you as away, and eventually be signed out for being idle. Any activity now puts you straight back to Available.
01Your account
Earlier today we turned on signing you out after 30 minutes idle. It had a bug that could sign you out within seconds of arriving, while you were still working, so it is switched off again until that is fixed. For the moment nothing signs you out for being idle. Please keep signing out by hand if you are on a shared or public computer. We will turn it back on once the fix is tested.
01Your account
If you left Status open and came back later, you would often find the "still working?" pop-up sitting there and yourself still signed in. Three things were wrong. The countdown was counting timer ticks rather than actual time, and browsers slow those right down in a background tab and stop them completely while the machine is asleep, so it could sit on screen for hours without ever finishing. The settings were also contradictory, which squeezed the countdown down to a few seconds. Both are fixed: every idle deadline is now measured against the real clock.
If a session had already been ended for being idle, moving the mouse used to quietly put it back to Available instead of finishing the sign-out. On a shared or public computer that meant the next person to touch the mouse was in the previous person's account. Now any activity on an ended session takes you to the login screen.
Set "Idle prompt" to 0 in Settings and there is no pop-up and no sound at all: an idle session is simply signed out at the Auto-logout time. Use it if you want the protection of being signed out without being nagged. 0 now means off for all three of these settings, and each one says so: Idle prompt is the warning, Auto-away only changes how you show to the team and never signs anyone out, and Auto-logout is the one that ends the session.
01Communications
If you host a meeting on Google Meet with transcription on, it now turns up under Communications > Meetings by itself, with the transcript, the title from your calendar invite, and the right date. Nothing to upload and nothing to remember. Status checks every few minutes and waits until Google has finished writing the transcript, which can take up to half an hour after the meeting ends, so a meeting appears a little while after it finishes rather than the moment you hang up. From there it behaves exactly like a meeting you logged by hand: the read-out, action items, client recap and everything else all work the same way.
Nobody chose to publish these, so nothing is shared by default. An internal meeting is visible only to the team members who were actually on the call, matched from the calendar invite. A client meeting instead opens to everyone who has access to that client, so the people already working on the account can see it. Anyone who was on the meeting can widen it later from the meeting page, to the client's team or to everyone, using the same "Who can view this meeting?" control as always.
If anyone on the invite is a contact linked to a client, the meeting is filed as that client's meeting. If everyone on it is internal, it is a company meeting. Same matching Status already uses for incoming email, so a client is recognised the same way whether they email you or meet you.
A new "Filed as" control on any meeting page lets you change its name, switch it between a company meeting and a client meeting, and pick (or correct) the client. Meetings that file themselves take their name from the calendar invite and their client from who was invited, so both can be wrong; this is how you fix it. It also fixes a meeting you logged by hand under the wrong client. Changing how a meeting is filed never changes who can view it, so re-filing something cannot quietly share it with more people.
"Who can view this meeting" used to sit open at the top of every meeting, taking up room and growing taller whenever you picked a mode that needed a list of names. It is now a small chip showing the current setting, and clicking it opens a panel that floats over the page instead of pushing the transcript down. The new "Filed as" control works the same way.
Previously only an admin or the person who logged a meeting could change who sees it. A meeting that files itself has no-one who logged it, so anyone who was on the call can now change its visibility too. Meetings you log by hand are unchanged.
01Tasks
Until now the outsider page assumed an HTML page built with Claude Code or similar. Both outsider kinds now ask "Built with an AI tool?" in the wizard and in the pop-up, on by default. Say No for a manual task, a report, research, or work done in a tool like GHL: the page becomes a plain brief (the project, the brief, the checklist, the files, the comments, and "Before you start"), with no starter kit, build guide or manifest, and the hand-in is a note on what they did with a zip only if there are files to hand over. The QA self-check then shows only the universal questions, or a "Manual work" category if you add one in Settings. The review task carries the note. Existing tasks are unchanged.
01Tasks
When someone on the team comments on a task a vendor is doing, the vendor gets an email at the address they gave on their contact form: who commented, the comment itself, and a link straight to the thread on their task page. It is sent from the commenter's own Gmail account, so a reply reaches them, or from the shared mailbox when the commenter has no Gmail connected. The vendor's own comments and comments on other kinds of task send nothing.
01Tasks
The first time a vendor signs in they fill in one form before anything else: the best way to contact them (email, WhatsApp or text), the email to use if not the one they signed in with, their WhatsApp and text numbers, the hours they are reachable and their time zone, how quickly we can expect a reply, and any notes. They can update it any time from their task list. What they gave shows under Settings, Vendors, and on the My Tasks card of every task they hold, with their numbers, hours and reply expectation written out under the Email vendor button.
On My Tasks, a task a vendor is doing no longer shows the work controls (the start command, the timer, "Need input to move forward"): there is nothing for you to build. In their place the card says who has the task, with their email, and an "Email vendor" button. It opens the same email composer you use everywhere, addressed to the vendor and prefilled with the assignment: the task, the link to its page, how to sign in with the invited Google account, where to ask questions and how to hand in. Edit it as you like, then send; your signature is added as usual, and draft-only members save it for review like any other email.
01Settings
A new Vendors section on Settings (needs the settings capability): invite an outside vendor with their name, the Google account they will sign in with, and optional notes. The list shows when each vendor last signed in, and you can deactivate or reactivate them. A deactivated vendor cannot sign in; their tasks and history stay. Vendors never appear on the team page, KPIs, hours, presence, or the assignee picker.
02Tasks
A task whose "Where is this done?" is Vendor has a Vendor field next to the owner in the pop-up, and the wizard asks "Which vendor does this?" when you pick that kind. Pick an invited vendor, or choose "Invite a new vendor" to invite one by name and Google email right there; they are selected on the spot and the task is waiting when they first sign in. The owner stays the assignee and the reviewer; the vendor is the person doing the work.
The login page has a "Vendors sign in here" link. An invited vendor signs in with their own Google account (name and email only, no other access) and lands on their own task list: the tasks where they are set as the vendor, each opening the task page and its hand-in. Anyone not invited is turned away with a clear message. A vendor session reaches nothing else in Status.
On a vendor task the full view keeps the comments, and the vendor can post in them from the page (their comments show their name and "(vendor)"; you reply from the task pop-up as usual). The page ends with "Submit your work", the same hand-in as a public test: QA self-check, one zip, a review task for the owner due tomorrow, and a comment on the task. The starter kit, the brief, the manifest, and the task's files open for the vendor on their tasks only.
Tasks you own that a vendor is doing sit in their own tab on My Tasks, with the vendor's name on the card, instead of mixing into In Progress and Next Up. The tab only appears when you have at least one such task.
The temporary diagnostic text that appeared after "Sign in to submit" while we chased the Safari cookie problem has been removed.
01Tasks
The sign-in step uses Google's own button style with the four-colour G. The zip picker is a button that says "Choose your zip" with the file name and size beside it, instead of a bare browser control. After a successful hand-in the form is replaced by a thank-you page: submitted to whom, which attempt, that we review once a week and they will hear back within 3 to 8 business days, and that they can submit again from the same link. Under it, a short contact form: email or WhatsApp, the email to use (prefilled from their Google sign-in, editable), a WhatsApp number, and any notes for us. Saving it posts a comment on the review task, so the reviewer has it in the same place as the zip.
01Tasks
Safari was loading the submit page signed in but sending no cookies with the upload requests behind it, so every upload was refused with "Sign in to submit". The page now hands the browser a short-lived signed token that the upload requests carry themselves; cookies remain the fallback. Reload the submit page once to pick it up.
01Tasks
Temporary: when the upload is refused with "Sign in to submit", the message now includes which cookies reached the server and where verification stopped, so the current mismatch between the page and the upload can be pinned down. No token contents are shown.
01Sign-in
If a browser sent two sign-in cookies with the same name (an old one next to the current one), a page could show you signed in while an API route answered "Sign in" (seen on the public-test submit page: signed in, but the upload refused with 401). Routes now check every cookie of that name and take the one that verifies.
01Tasks
The submit page now shows a progress bar with the percentage and megabytes while the zip uploads, sends anything over 8 MB in parallel parts that retry on their own (so a 100 MB zip survives a wobbly connection), keeps the button disabled until the upload and the checks finish, and refuses a file over 100 MB before it starts. When the upload cannot begin, the page asks our server for the reason and shows it, instead of the upload library's generic message.
01Tasks
Google blocks accounts from outside our Workspace on the team sign-in (it is an internal app because it connects Gmail). The "sign in to submit" step now uses a dedicated Google client with name-and-email-only permissions once it is configured; until then outsiders see Google's block and SGA accounts still work.
01Tasks
A Public test page ends with "Submit your work". The person signs in with any Google account (we ask Google for name and email only, nothing else; no user is created), ticks the QA self-check drawn from your Upload QA settings, and uploads one zip (up to 100 MB), which goes straight to storage. We check it is a zip with an HTML page inside and no path tricks, attach it to the task, and create a review task for the task's owner, due tomorrow, saying who submitted, when, which attempt, with a link back to the task page, the zip attached, and their QA ticks. A comment on the original task records the hand-in. Every attempt is kept; a candidate sees only their own, and submissions never appear on the public page or in the starter kit.
01Tasks
Set a task to Public test and its full-view link works with no login: the outsider version of the page (project, brief, how to start, checklist, meeting context, files and links, the build guide), the starter kit, the sga-task.json manifest, and the files themselves. Every other task keeps the login exactly as before: a visitor without a session is sent to the sign-in page. Signing in to submit comes with the next step.
For someone who would rather hand their AI tool a link than a folder: the "How to start" step now links to brief.md, the same Markdown that is inside the starter kit. Public on a Public test; login-only otherwise.
01Tasks
The last step of "Add a task" now lets you attach what the doer needs before the task exists: upload files, or add links (a registered deliverable, a file on files.sga.team, or any URL, with your own name for it). They attach the moment the task is created. Optional; skip it when the description covers everything.
01Tasks
A task's Files section can now hold links alongside uploads. Click "Add link" and pick a registered deliverable from the client's list, browse the client's folder on files.sga.team, or paste any URL. The name defaults to the deliverable or file name and you can rename it ("Build the Classic brand guide" becomes "Brand guide"). Links show with a link icon, open where they point, and delete like any file. They appear in the same place everywhere: the pop-up, the full view, the Markdown brief, and the starter kit, where a link we can fetch is packed as a readable copy and every link is listed in assets.md.
01Tasks
Step 4 of "How to start" and the stop rule in the starter kit now say it plainly: when it is done and you believe the client who asked for it will be thrilled, you are finished. The checklist is described as the floor, not the bar. And a test project says we do not take questions: the brief is the whole assignment, work from it as given.
01Tasks
A Public test or Vendor page now has a four-step "How to start" section right after the brief, with a button that downloads a starter kit: a zip of a folder holding the brief, our build guide, the files attached to the task (already downloaded, up to 50 MB; anything larger is listed as a link), a starting index.html, an empty assets and chat folder, sga-task.json, and a CLAUDE.md plus AGENTS.md that tell Claude Code, Codex, Cursor or any other tool what to do. Those instructions end with a stop rule: the tool must not zip anything until the person has reviewed every checklist item at phone, tablet and laptop width and would call the client thrilled, then reminds them to export the chat history. They hand back that same folder, zipped.
01Tasks
The guide is long, so it no longer sits between the brief and the checklist. The assignment comes first (project, brief, checklist, comments, meeting context, files), and the guide is the final section with its "What you hand back" card and the sga-task.json download still visible; click to expand the full guide. Same order in the Markdown version.
01Tasks
The project is "the bigger picture: the whole project your piece belongs to"; the brief is "the piece of that project you are building now"; the guide, the checklist, the comments, the meeting context and the files each say in one line what they are and what to do with them. Same lines in the Markdown version.
The page must look and read as if a specialist crafted it for this client. The guide lists the tells to remove in the review: stock AI phrasing, emoji, question headlines, and the tool's default look (gradient hero, three-icon grid, glassy cards), plus invented statistics or stock imagery.
01Tasks
The guide on a Public test or Vendor page now opens with what the job actually is: the AI draft is not the work, the review is. It says we grade against the task's checklist and that we read the full, unedited chat history, which now goes in the zip in a chat/ folder, one file per session, with export steps for Claude Code, Cursor, Codex and web chats. The checklist on the page is labelled as the rubric the reviewer uses.
01Tasks
A Public test or Vendor task's full view now carries our full guide to building an HTML deliverable, straight after the brief: what they hand back (one zip, index.html at the root, one folder per deliverable when the brief names several), the technology (static HTML, CSS and a little JavaScript, no frameworks or build tools), file and naming rules, the two lines every page must have (the viewport meta and our review script), the widths we check, brand grounding, copy rules (no em or en dashes, no placeholders, no internal notes), how to mark up a question for the client so it shows in the review tool, a hand-in checklist, how revisions work for vendors, and a starter skeleton. The text lives in the house rules; the app keeps a synced copy and a test fails if the two drift.
The same section offers a small file to download, sga-task.json, naming the client, initiative, task, reviewer and the deliverable(s) with the next version number. The guide tells them to put it at the root of the zip unedited, so when the zip lands in our inbox it can be filed without guessing. Nothing to fill in by hand: the page generates it from the task.
01Tasks
A task description or initiative description typed with line breaks, numbered steps, dashes for bullets, or a short all-caps label on its own line now shows up that way on the full view: paragraphs, lists, small headings, and clickable links. Before, the whole thing ran together as a single paragraph.
The file link said "Open" and pointed at a route meant only for Claude Code, so for a person it failed. It now reads "Download", saves the file under its real name, and accepts your normal login.
For the two outside kinds the page now says "Your project will be reviewed by" with the owner, instead of "Assignee", and frames the content as "The project" and "The brief". A Public test also drops the due date and the "Before you build" check: it is what it is, and we do not want questions coming back. A Vendor keeps both, since that is a working relationship. Files on a Public test task download without a login, which matters once that page opens up.
Phase 1 of handing a task to someone outside SGA: the two kinds exist, and the full view renders the outsider version for them. Public viewing, submitting a zip, and vendor logins come in the next phases.
01Tasks
When you create a task, or change where it is done from the task pop-up, there are two new kinds. Public test: an outsider does it from the task's full-view link, anyone with the link will be able to read it, and they sign in only to submit; use it for a skills test. Vendor: an invited vendor does it from the full-view link, must log in to see it, and it will show on their My Tasks. In both, the owner you pick stays the reviewer. Each choice explains itself in the picker. Neither is offered on an automation template, so a schedule can never publish a task to outsiders.
Set a task to Public test or Vendor and its full view (and the Markdown brief Claude Code fetches) shows only what the outsider needs: the initiative description, the task, the checklist, the files, and any meeting context attached to the initiative, plus a pre-build check written for them. Context on file, the communication thread, dependencies, the other tasks in the initiative, repo paths, the company-files link and the system ids are left out. Comments are disabled on a Public test (the section says so, since anyone with the link can read the page) and shown on a Vendor task, because a vendor is logged in. This is also your preview of what an outsider will see, so check it before the link goes anywhere. The page itself still requires an SGA login for now; opening it up is the next phase.
01Tasks
The full view of a task (and the Markdown brief Claude Code fetches) has a section listing the other tasks in the same initiative, for orientation. For any task created directly in Status, which is every task now that Asana is gone, that section said "None" even when the initiative had a dozen tasks: the sibling check leaned on the old Asana id, and two tasks with no Asana id looked like the same task. Siblings are matched by their real id now, so the list is back.
01Meetings
If you logged a meeting with a plain "You: / Them:" style transcript (no "HH:MM:SS" markers on each line), the read-out came back with everything except the topic chapters, so there was nothing to add to an initiative as context. The chaptering only understood timestamped transcripts. It now falls back to reading a plain transcript line by line, so the topics come through and can be attached to initiatives as before. If you have a meeting like that, press Re-enrich to get its topics. Timestamped exports (Zoom's VTT) still give the best result, including the time markers where a topic is picked back up later.
Same fix as the task pop-up, extended to initiatives: one pop-up, everywhere, showing editable fields only to whoever is allowed to use them.
01Initiatives
Two separate problems, one fix. First: on several pages (the Dashboard, the client board, the daily rundown) every initiative pop-up opened fully editable for anyone, regardless of permission. Second: the "quick view" available elsewhere wasn’t really a view of the initiative at all — it showed only a task-style description and comments, missing the stage progress, dates, plan, and deliverables that make an initiative pop-up worth opening. Every initiative pop-up in the app now opens the same rich view for everyone — stage strip, dates, plan and deliverables, task list, and the conversation — with the fields you can actually change shown only to people allowed to change them.
The task pop-up used to be one of two different things depending on which page you clicked from, and the two didn’t always agree on who should see which. It’s now a single pop-up that shows the right fields for whoever is looking, everywhere in the app.
01Tasks
A task used to open one of two different pop-ups — a full editor or a stripped-down read-only view — and which one you got depended on the page, not on your permissions. On the Dashboard specifically, one list opened the read-only view even for admins, while another list two sections down opened the full editor for anyone. Every task pop-up in the app (Dashboard, My Tasks, Calendar, the client board, full view, the daily rundown, due-soon reminders, your inbox) now opens the same pop-up, and it shows editable fields only for people who are allowed to change them — everyone else sees the same information read-only instead of a different, thinner view.
01Presence
The idle prompt has always played a sound when it appears, and again every five seconds while it waits on you. There was no way to turn that off. A small speaker icon now sits next to your status control in the sidebar — click it to mute the sound for yourself, in this browser. Everything else about the prompt (the grace period, the forced-away if you never respond) still happens exactly as before; only the sound is optional.
02Clients
The Archive/Unarchive button on the client directory worked correctly but gave no feedback when it succeeded, so it was easy to click twice or wonder if anything happened. It now shows a confirmation toast, the same way other actions in the app do.
03Comms
The email composer is a plain editable text box, so the browser decides how a paragraph break is stored depending on which key combination made it. Putting a link on its own line and leaving a blank line under it happened to use a different combination than a normal paragraph break, so it rendered with a visibly smaller gap in the sent email. Every paragraph break now gets the same spacing, however it was typed.
The email composer already had bulleted and numbered list buttons in its toolbar, but nothing responded to typing a dash or a number the way most editors do — so it was easy to assume lists weren’t supported at all. Typing a dash, an asterisk, or "1." followed by a space at the start of a line now converts it into a list automatically, same as clicking the toolbar button.
A list looked fine once sent, but the "Preview" under your signature, the company signature, and a shared draft awaiting review all showed it as plain, unmarked text — the same missing styling that made the composer’s own lists invisible while typing. Fixed everywhere it showed up.
With three project managers instead of one, the dashboard and the daily rundown now start with the work you are accountable for, and widen only when you ask.
01Dashboard
By default you now see the clients you own and the people you manage, on both dashboard tabs and in the daily rundown. That is everyone, admins included: your own work is the normal view. Two separate switches widen it: "All clients" and "All the team". They are deliberately independent, because wanting to look across every client says nothing about wanting to rate every person. The Company view carries the client switch, the Team view carries the team one, and the rundown carries both since it walks clients and people in one pass. Company and Team have also moved off the page and into the left-hand rail, under Dashboard, which frees the top of the page for the controls that actually change what you are looking at. A switch only appears when you have something to narrow to on that side, so someone who owns clients but manages nobody sees one switch, not two.
The rundown listed every active person in the business, whoever was running it. It never applied the view list from Settings, which the Team page and the dashboard have always respected, so someone permitted to see two teammates was still handed all six to walk through. It now shows only the people you can view.
The team half of the dashboard and the rundown defaults to the people you manage. If you manage nobody it was falling back to showing the whole team, which is the wrong way round: rating someone is a judgement their own manager makes, so managing nobody should mean nothing to rate. It now starts empty, and "All the team" is there to widen it to everyone you are allowed to see. That switch also now appears whether or not you manage anyone, since it is the way back from an empty list. Clients keep the opposite fallback on purpose: seeing a client is not a judgement, so owning none still shows you every client you can reach.
Two separate things were making it feel slow. The switches were drawn from the server’s answer, so the knob could not move until the whole page had finished reloading: you clicked, nothing happened, you clicked again. They now move the moment you click, with a small spinner while the page catches up. Underneath that, the page itself was doing more work than it needed: the client list alone was fetched three times per load, the same permissions lookup ran five or more times, and a dozen queries that do not depend on each other were running one after another instead of together. The Team view no longer runs any of the client-side work either: the daily rundown button and the AI audit are client controls, so they now sit on the Company view only rather than quietly costing the Team view a client list, a day of sign-off records and 600 activity events to colour a button. Same numbers on screen, noticeably less waiting.
The three tiles at the top of the Company view were always calculated across every client in the business, whoever was looking and whatever was on screen underneath. So a project manager reading three clients saw a communication score covering fourteen, and someone with access to eight clients still saw totals for all of them. The tiles now cover exactly the clients listed below them: your own, or every one you can see, depending on the switch. The full view is unchanged and still grades the whole book.
It used to count every client you could see, so a project manager responsible for three was told they had fourteen left to get through. It now counts whatever the switch is showing you, and still only turns green when they are all signed off.
The dashboard and the rundown read the same piece of code to decide what you own and who you manage. They were always going to be asked the same question, and two separate answers would eventually have disagreed: your scoreboard covering one set of clients and your rundown another. If you own nothing and manage nobody the switch does not appear at all, since there would be nothing to narrow to, and you keep seeing everything as before.
Groundwork for splitting the daily rundown between project managers. Clients already record who owns them; people did not.
01For the team
Settings, Team members, pick a person and there is a Manager field next to their role. It uses the same picker as the client owner, so choosing a person looks the same wherever you do it. Someone with no manager stays a normal, working member: the panel says "No manager" rather than leaving the field looking unfilled, because nobody being accountable for a person is a real answer and worth seeing.
A person has exactly one manager, the same way a client has exactly one owner. The daily rundown is a manager judging a person on a given day, so two managers would mean two conflicting scores for the same person on the same day with nothing to say which is right. Working across several clients and reporting to several people are different things: someone can do work on any client and still answer to one manager. Nothing in the rundown reads this field yet, that is the next piece.
Three fixes that came out of testing the app with fresh accounts. One of them closed a real gap in who could see which client.
01Everywhere
The board, deliverables, communication and reviews tabs each checked that you were allowed to see that client before showing you anything. History, schedule and report did not, so someone who typed the address directly could reach those three tabs for a client they had not been given. Because the client header sits above all of them, that also showed the client name, its owner and its scorecard. The check now runs once for the whole client page, which covers those three today and covers any tab added later without anyone having to remember.
02Communication
The Drafts number on the Threads board and the Inbox counted drafts that were replying to something. A "New email" written from scratch has no conversation behind it, so it was never counted and never listed, and the number you saw was lower than the number of drafts you actually had waiting. Those drafts now count towards the total, and when you open Drafts a line tells you how many are not attached to a conversation with a link straight to them.
The Inbox showed the last 30 days up to today, which quietly hid anything dated ahead of today. Such a message still existed, still sat in its conversation, and still counted towards that conversation needing a reply, it just never appeared in the feed, which reads as losing mail rather than filtering it. The Inbox now has no end date by default. Set a To date yourself when you want a closed window. Such a message also now reads as "in 3d" rather than claiming it arrived just now.
The Communication score was being dragged down by the review tool, not by how we actually communicate. Two things were wrong: a client working through a mockup was counted once per annotation instead of once per sitting, and conversations the board deliberately hides were being scored anyway. Both are fixed.
01Communication
Every annotation, approval and answered request from the review tool arrives in the conversation as its own message, which is right: the timeline should show exactly what the client did. But the queue was asking you to mark each one separately, so one client sitting down with a mockup could cost nine clicks. Those messages are now grouped into the sitting they came from, with one "Mark all replied" (or "No reply needed") that clears the whole batch at once. You still decide it yourself, nothing clears on its own, you just decide it once.
The same sitting was being graded as nine separate client messages, so nine late marks came from one piece of feedback. Review traffic was 18% of the messages this month but 41% of every late mark, holding the company score at 70% when the underlying email performance was 79%. A sitting is now graded as one message: the clock starts when the client first spoke and stops when you finish marking the batch. The Communication drill-down says how many review items a row stands for.
The first all-clients sweep of the AI rundown check found the genuinely overdue work well, 14 of the 17 overdue tasks in the whole system, but four out of five of its findings were not real problems: initiatives with no pipeline stage set (which the app treats as Strategy anyway), and work due today or tomorrow reported as at risk. Nothing changes today. The backlog now carries the full write-up: which rules to drop, that anything already marked complete should not be audited at all, capping and de-duplicating what each client gets, letting a finding be dismissed so it stops coming back every day, and pulling the genuine data tidy-ups into a standing list instead of re-finding them each morning.
Because review feedback no longer counts towards the Communication score, it needs a proper moment that does. The backlog now carries it: at the end of a review the client clicks that they are done, and that sends one email on their behalf summarising what they left. It arrives as a normal client email, so it joins the queue and is scored like any other, one per review rather than one per comment. The individual comments keep showing up in the conversation exactly as they do now.
Some conversations are deliberately kept off the Communication board: the internal ones, which is also why they never appear in "awaiting our reply". Their client messages were still being counted in the Communication score, so the score could be marked down for messages the queue never put in front of anyone. That is where the review feedback was going — it lands on the initiative’s internal thread, which is why it read as ignored when nobody had actually been shown it. The score now covers exactly what the queue shows. Review feedback is unchanged everywhere you read and mark it, on the initiative’s Communication tab and in the timeline.
Six conversations were showing as awaiting a reply even though every message in them had already been marked. Their status had drifted out of step with their messages. They have been rolled back up, so the awaiting-reply count is now only conversations that genuinely are.
01Backlog
A task status is currently stored as the words you see on the label, rather than as an id that points at a name you can edit. That means changing the wording of a status, or fixing a typo in its definition, needs a code change, and anything already recorded in history keeps the old wording for good. Nothing about how the app behaves changes today. The backlog now carries the full write-up of what a proper fix looks like, so the decision is captured rather than rediscovered.
The meeting analysis sometimes gets the shape wrong — three suggested tasks that are really one task with steps, an item filed as an action that is really an open question. You can now fix that with an instruction instead of editing item by item.
01Communication
On an analysed meeting there is now "✨ Edit with AI": type (or dictate) an instruction — "combine the three site-copy tasks into one task with a checklist", "move the pricing question to open items" — and it proposes the edit against the stored read-out. You see a before-and-after preview first: what would be added, removed, or reworded, with unchanged items tucked away. Nothing is saved until you press Apply, and Discard keeps your instruction so you can refine it and preview again.
When several suggested tasks are folded into one, the combined item keeps the pieces as a checklist — shown on the read-out, and pre-filled into the task wizard when you create the task from that item. Your processed ticks and "✓ Created" marks survive the edit for items whose titles did not change, and the topic chapters are never touched by it.
The third tool on the read-out: "🔍 Audit items" re-reads the transcript against the action and open items exactly as they stand — your edits included — and reports anything the list missed (with the transcript quote to check it against) and anything that contradicts the meeting, like a wrong owner or a date nobody agreed. Deliberate consolidations are understood, not flagged. Run it any time to check yourselves; the verdict stays on the read-out.
Every finding carries its own controls, because sometimes the audit catches something you deliberately do not want to change. A missed item gets "+ Add as item" — one click appends it with the owner and detail the audit already worked out. A problem gets "✨ Fix with AI", which opens the edit tool pre-filled with exactly that fix, so you still see the preview before anything applies. And anything you disagree with gets Dismiss. Handled findings fade but stay visible, so the audit remains a record of what was checked, and applying one fix never touches the rest.
The daily rundown stays a human job — that does not change. What is new: after a client is signed off, an AI pass can audit the same data you just walked and tell you what it would have raised that the rundown did not.
01Dashboard
Each client's Daily rundown drill-down on the dashboard now has an "AI check" panel. Once the client has been signed off today, run it: four focused passes audit the client's timing and dates, communication trail, blockers and capacity — the same live data the wizard showed you — then compare against what the rundown recorded. You get a short verdict, the findings the rundown missed (each phrased so it can be raised in the status meeting as-is), and a collapsed list of what it already covered. Checks are saved, so the latest one is there when you come back.
Next to Do Daily Rundown there is now "✨ AI audit": it sweeps all your clients one at a time with a live status list, then rolls up the result — how many audited, how many missed findings, how many high severity. Clients not signed off today are skipped, because the check exists to double-check a rundown, not to replace one. Full read-outs land in each client's drill-down.
The audit also looks at open tasks whose initiative has already been closed — work that is invisible in the rundown wizard's initiative view and therefore the easiest thing for anyone to miss.
The dev sandbox reseeds with a realistic pipeline now: stages and client-facing dates set, mostly on track with a deliberate late item or two, instead of everything reading overdue after a week.
The task pop-up could already link a deliverable after the fact. Now the create wizards can do it up front, so new work starts life attached to the thing it is producing.
01Deliverables
Under the name field in both create wizards there is now "+ Link a deliverable" — the same searchable picker as the task pop-up, grouped Active / Future / Completed and then by initiative. Stage one or more; they show as removable chips and are linked the moment the work is created. A task link rolls up to its initiative automatically, exactly as it does from the pop-up. Initiatives can now carry deliverable links from birth too — useful for a plan or an asset that belongs to the initiative as a whole rather than any one task.
The pop-up's deliverable picker was extracted into a shared component that the pop-up and both wizards all render, so the three surfaces can never drift apart.
Second batch from the August fixes list. The headline: clicking outside a pop-up no longer throws away what you typed.
01Everywhere
A stray click on the darkened background used to close whatever you had open — task pop-up, initiative pop-up, a wizard mid-flow — and take your half-typed work with it. That is gone across the whole app: pop-ups now close only through an explicit control. Stray Escape presses no longer close pop-ups that hold edits either. Dropdown menus and the sidebar drawer still close on an outside click, as menus should.
Some pop-ups (the task and initiative pop-ups, the calendar event card) had no close control at all — the backdrop click WAS the close, which is exactly what made it dangerous. The shared pop-up frame now renders its own ✕ in the top-right corner, so everything has an obvious way out.
02Tasks
The task pop-up's "add checklist item" box is now a full AI field: dictate, clean up, or generate a checklist from the task's name and description (or a conversation or meeting you pick as context). Generated items land in the box first for you to read and edit — pressing Add appends them under whatever is already on the list. Your existing checklist is never replaced. The box now takes one item per line; press ⌘/Ctrl+Enter or the Add button to add.
03Dashboard
Every note box in the daily rundown wizard now carries the same AI tools as the rest of the app. The summary boxes — timing, communication, the sign-offs, and the per-person quality note — can generate a grounded draft from what the wizard already knows: that client's initiatives and dates, open and recent messages, KPIs, and each person's open tasks. The short factual notes get dictation and clean-up.
04Communication
Each action item and open item on a meeting's read-out now has a "Mark processed" toggle, and processed items fade so you can see at a glance what is left to handle. Creating a task or initiative from an item marks it automatically and shows "✓ Created" with the name of what was made. The marks survive re-analysing the meeting, and the client recap is unaffected.
First batch from the August fixes list: work submitted through the API now actually attaches its deliverable, sub-companies got their New initiative button back, and the meeting forms stop asking for things they already know.
01Deliverables
A deliverable registered by a Claude Code session (the /api/submit path) recorded where it was created but never created the actual attachment, so the task pop-up said "No deliverables linked to this task yet" and the initiative bar showed nothing. Submitting now attaches the deliverable to the task, which automatically rolls it up to the initiative as well — and a submit without a task attaches it to the initiative directly. Deliverables added through the API deliverables route were orphaned the same way and are fixed the same way.
The fix only covers new submissions, so the deliverables the bug had already orphaned were re-attached in one pass: each one now links to the task or initiative it was created in, exactly as if the attachment had worked at submit time. They show up in their task pop-ups and initiative bars again.
02Board
A sub-company has no project of its own (its work rides the parent's), and that technicality was hiding the New initiative button entirely on child-company pages. The button now shows there, and the initiative it creates is automatically tagged to that sub-company — the wizard shows which company it will land on.
03Communication
The "Log a meeting" form's date field started empty, and a meeting saved without touching it ended up with no date at all. It now starts on today (and got a label), and a meeting logged with the date untouched is stamped with today's date rather than left dateless.
Both the "Log a meeting" form and the calendar's New meeting form now pre-fill the title: "Company meeting" for an internal one, or "<Client name> meeting" once you pick the client. Type your own title and it sticks — the default only fills the field while you haven't.
On an enriched meeting, the "+ Add to initiative" button on a topic slice now pre-selects the meeting's client in the picker, the same way the + Task and + Initiative buttons already did — you can still switch it. Sub-companies in that picker now read as "Parent › Child" instead of looking like unrelated companies.
Sending messages to clients is now a permission. Someone without it can still write the message in full, save it as a draft, and have a person who does have it review and send it. Built for bringing new people in: they do real client work from day one, with a check in front of it.
01Communication
If "Can send messages to clients" is unticked for you, the composer works exactly as it always has (reply, reply all, forward, new email, formatting, AI help, your signature) but the button at the bottom says Save draft instead of Send. Nothing reaches a client until someone with sending permission has read it. You do not need a mailbox of your own connected to write one.
Save draft is there even with full sending permission, so you can put an email down and come back to it rather than leaving a tab open. It reads Update draft once saved.
Communication → Drafts holds everything written but not sent, with a count beside it so nothing sits unnoticed. If you can send, you see the whole queue and can open, edit and send any of them. If you cannot, you see your own drafts waiting to be checked. Every draft has a Delete beside it, so a duplicate or one written by mistake can go without hunting for it.
On a draft you can pick any of our connected mailboxes as the From, not just your own, and it defaults to the address the client actually wrote to. That is almost always the right answer: a reply should come from whoever they have been dealing with. It is a suggestion rather than an authorisation, because the person who sends it is still checked against their own permissions, so nothing can go out from an address it should not. If a reviewer cannot send from the address the writer chose, they are told what was intended and asked to pick — it is never swapped quietly.
This is where you go looking for it, so this is where it is. Open the conversation and the message and its unsent reply are wrapped together in one amber block with a "Draft not sent" banner across the top, so you can see exactly which message is being answered. A draft for a brand-new email shows at the top of the conversation instead, so one can never be invisible. Sending it marks that message replied and threads onto the conversation, exactly as replying directly would.
A thread with an unsent draft carries a "Draft written" marker on the Communication board, and "Draft written" is a view along the top with its own count. The Inbox tab has a Drafts view too, listing the messages that have one. It shows on a client’s own Communication tab as well as the main board. This is what stops two people answering the same client: before you reply, you can see that somebody already has.
Leaving a draft in the queue is usually enough, since everyone who can send sees it. When it needs one particular person, "Ask someone to check it" creates a normal task for them with a link that opens the draft directly.
Replying to a client through Asana posted straight through without checking anything, which would have made the whole permission decorative: someone told they may not send could simply reply there instead. It is now gated exactly like email, and the Asana reply box offers Save draft on the same terms. Those drafts join the same queue, marked as Asana replies, and a reviewer presses Post to Asana.
02Settings
Set in Settings → People & Access, in the Communication group with the other email permissions. It covers email AND Asana replies, since both reach the client. It is ON for everyone already on the team, so nothing changed for anyone today; untick it for a new hire to make them draft-only. Note for roles: applying a role preset sets every permission explicitly, so tick it on any role that should have it.
They were single words — "Unmatched mail", "Ignore list", "Fetch / sync", "Meetings" — which told you the name of a thing but not what ticking it allowed. Each one is now a sentence describing what the person can actually do, matching the rest of the list. The sending permissions moved into the Communication group too, where they belong, rather than sitting under Settings.
03Help
"Drafts and sending permission" under Client communication covers writing a draft when you cannot send, choosing who it comes from, getting it looked at, reviewing someone else’s, and where a saved draft shows up.
A draft sitting in a connected Gmail account was being pulled into Status and stored as though it had been sent. It looked identical to a real sent message in the history, and it quietly made the conversation look replied-to.
01Communication
An unsent draft is a real message inside Gmail, and the mail pull was not excluding them. Because a draft is written by you, it arrived as an outbound message and appeared in the history exactly like something you had actually sent. Drafts are now skipped when the mail is pulled, and checked a second time on the way in, so one can never slip through.
This was the damaging half. Storing a draft as a sent message told Status the client had been answered, so the thread stopped asking for a reply, dropped out of "Needs attention", and its suggested draft was cleared. A conversation you had only started writing a reply to could go quiet on you. That cannot happen now.
Settings → Communications → Communications maintenance has a new "Drafts pulled in as sent" tool. It checks every connected mailbox and lists the stored messages that are still unsent drafts, so you can see exactly what it found before removing anything. Removing them also puts those conversations back to needing a reply. Anything that has since actually been sent is left alone.
The Communication KPI changed in August from a count of open threads to a monthly timeliness score, but the Help page never caught up. Anyone reading it was learning the old rule for a number they are measured on. Fixed, along with two other pieces of stale documentation.
01Help
The Dashboard help said the number "counts threads awaiting our reply". It has not done that since August 11: it is the share of client messages processed within one business day this month, and the awaiting-our-reply count is the live red figure underneath it. Both the three-KPIs section and the client-card description now say so, including that weekends do not count (a Friday morning message is due Monday morning) and that a message still inside its window is pending rather than a miss.
The Communication section now explains the reason behind the one-day standard, not just the rule: a day of silence reads to a client as work in progress and turns into a promise nobody made, while a fast reply buys the room to move a date before it costs anything.
The rename was reversed a while back, but the Help pages still said "How Blueprint works" and "Working in Blueprint" throughout. They say Status again. The Blueprint view on plan templates is a different thing and is untouched.
02For the team
docs/sop-sga-status.md still described Asana as the source of truth, the required project sections, and the eleven-option status dropdown that used to drive the stage strip. It now opens with a banner saying not to train from it, listing exactly which sections are dead, pointing at the live sources, and noting the parts that are still correct (the files.sga.team publishing rules and the core vocabulary).
The comment box on a task or an initiative had no AI on it at all, while the reply box below each comment had AI but could not tag anyone. Both boxes are now the same box, and it does both.
01Tasks & initiatives
The gold spark in the top-right of the comment box opens the same three tools every other field in the app has: Dictate (speak instead of typing), Generate with AI (write it from a conversation or a meeting), and Clean up with AI (tidy what is there, which is the one to use straight after dictating). An Undo link appears after any AI change, so it can never eat what you wrote.
Typing @ in a reply now brings up the team list and notifies whoever you pick, the same as on a new comment. Previously mentions only worked on top-level comments, so pulling a colleague into an existing thread meant starting a separate one.
Because tagging is worked out from the finished text rather than only from picking off the dropdown, saying a teammate’s name after an "at" while dictating tags them just as typing it would.
They had drifted into opposite halves of the same feature: one had mentions and no AI, the other had AI and no mentions. There is now a single box used in both places, so a change to either capability lands in both.
02Help
"Commenting and tagging people" now sits under Your My Tasks page, covering @-mentions, replying, and what each of the three AI tools does. It also shows in the help panel on My Tasks.
Logging a call or a meeting only worked from the Communication board, so remembering one while reading a meeting meant navigating away and back. The action now sits on every page under Communication.
01Communication
Both pages now carry a "+ Log a meeting" button in the header, opening the same form the Communication board has always had. It opens on the meeting tab, since that is what those pages are about. Previously the only way to log anything was to go back to the Communication board first, which is exactly when you forget what you were going to log.
Logging a meeting takes you straight to its page rather than dropping you back on the board to go and find it. Analysing the transcript is the next thing you do, so that is where you land. A logged conversation still just appears on the board.
The form was defined inside the Communication board, so no other page could offer it. It is now a shared component that all three pages mount, which means the fields, the visibility picker and the validation can never drift apart between them.
02Help
Client communication now has a "Logging a conversation or meeting" section covering where the action lives, the difference between a conversation, a company meeting and a client meeting, and setting who can see a meeting before you save it.
Meetings loop: something raised early gets picked back up later. "Meeting context by topic" now gathers everything said about one piece of work into a single topic, however far apart those parts were, so a topic is a complete brief you can act on.
01Meetings
Previously each topic was one continuous run of the meeting, so a subject discussed at 9:11 and again at 10:02 became two separate entries, and neither one held the full picture. A topic now collects every stretch of the meeting about that piece of work. Where a topic jumps in time, the transcript shows the timestamp so you can see it moved. This matters because a topic is what gets handed over as the brief for actually doing the work, and half a conversation makes a poor brief.
Working out that a subject raised early is the same piece of work being picked up 50 minutes later needs the whole meeting held in mind at once. This step was running on the cheapest model available, which was lumping large stretches together and mislabelling them. It now runs on the same model used for pulling out action items.
Two fixes. Meeting chapters were sometimes labelled correctly but pointed at the wrong part of the transcript, which hid whole discussions. And picking or creating an initiative for a sub-client (like Ideal Exit) said there were none.
01Meetings
Chapters were located by a timestamp the AI copied out of the transcript. When it copied the wrong one, the chapter still looked fine, it just showed the wrong conversation: in one meeting a whole discussion about pre-call prep was buried inside a chapter named after something else, and a 23-second chapter was left behind carrying its title. Chapters are now located by quoting the first line of the discussion instead, which is far harder to get wrong, and a quote that does not match is caught rather than silently guessed at. If you have a meeting whose chapters look off, re-running the analysis will now place them correctly.
A chapter that comes out a few seconds long, or one that swallows most of the meeting, is now recorded as a warning so we can spot it. Nothing is deleted or merged automatically, because a wrong-looking chapter still holds real content.
02Work
Choosing a sub-client (Ideal Exit, ChartPro, SBMFRX, Innovation Institute, Strategic Drycleaner) when filing a task or attaching a meeting showed no initiatives on any tab, even though the work was there. A sub-client's work is stored under its parent, and the picker was only looking at one of the two. It now finds it.
The "New initiative for this" pop-up was quietly falling back to the ordinary "which initiative?" picker for sub-clients, so it asked you to choose an initiative you were in the middle of creating. It now goes straight to naming it, and new work created from a sub-client is filed against that sub-client rather than its parent.
Fixed a bug where removing a missed stage-deadline penalty on the Late work page failed with "Could not remove the penalty."
01Scorecard
On the Late work page, removing a penalty for a missed stage deadline (a client date on an initiative) was always failing with "Could not remove the penalty." It now removes cleanly. Removing a person's late-task penalty was never affected. The "reset everyone to perfect" bulk action, which hit the same fault on initiative penalties, is fixed too.
A new kind of automation that sends email. The first one: when a client message has sat unanswered too long, it sends a short, honest "we've seen you, a real reply is coming" note - and it never marks the message answered, so a person still replies properly.
01Automations
Under Automations, "New automation" now offers a second kind: "Sends an auto-reply". Set it to the clients you choose, and when one of their messages has waited longer than your threshold (in business hours), it auto-sends a brief acknowledgement that is honest about being AI and never tries to do the work. Because client requests usually arrive with almost no detail, it reads the message, works out what we are missing (the goal, the audience, the deadline, how to prioritise it, any examples, whether they have the assets), and asks for exactly those things so we can move faster. It never marks the message replied - a real answer is still owed, and the thread stays on your list.
Choose whether it replies from the mailbox the client wrote to, or always from a specific address (info@ included). Set the wait (default 3 hours) and the business-hours window. The wording is a prompt right on the responder - pre-filled with a solid default, editable in place (dictate or generate with AI), with merge fields like {{client.name}}. A "Test the reply" box shows what it would write for a sample email before you ever send.
A responder can now be set to "Answer the question": it reads the email, the conversation, what we're working on for that client (with due dates), and recent meeting notes, and writes a real answer - but only when it can answer confidently from what we actually know. For anything that needs judgement, a price, or a decision, it does not guess: it falls back to a short acknowledgement and says a person will follow up. It still leaves the thread flagged so someone can glance at what went out.
A responder is flexible enough to be an out-of-office too, no separate setup: choose which of our inboxes it covers (any, or one person's), reply instantly instead of waiting, turn business hours off so it replies any time, and set an active date range (your away window). And you can pick "send a set message" (a fixed note with merge fields and your signature) instead of letting the AI write it.
Every responder starts switched off and sends to nobody until you opt specific clients in and enable it. It replies at most once per conversation, never to auto-replies or no-reply addresses, and never to internal or unmatched threads. "Preview" shows exactly who it would reply to, and "Test the reply" shows the exact wording, before you ever send.
A "New meeting" button on the calendar. Pick a time, a host, and who to invite; optionally spin up a Zoom link on the spot; and everyone gets a calendar invite.
01Calendar
Click "New meeting" on the calendar to schedule one: title, date, time, length, a host, and attendees. For video you have three choices: create a fresh Zoom meeting on the spot, paste an existing link (for when someone hands you their own), or no link at all. It goes on the host's Google Calendar and Zoom, on the attendees' calendars, and here on your Status calendar.
Scheduling has a time-zone picker (US zones, Philippines, and the UK, defaulting to Central / SGA), so you can enter the time in whoever's zone the meeting is really in. Everyone invited still sees it converted to their own zone on the calendar invite.
When you have Google Calendar meetings today, a small "Meetings today" list now shows at the top of the right rail on My Tasks, just above your inbox, with each meeting's time and a Join button. Click a meeting's title to open its full details (time, guests, notes, link). It only appears on days you actually have meetings.
The host does not have to be you. Pick any teammate as the host and the meeting is created on their Zoom, so an assistant can book a call for someone else. Everyone invited gets a normal Google Calendar invite with the join link.
When you schedule, you mark the meeting as internal (company) or a client meeting, and for a client meeting you pick which client. The attendee list then splits in two: your internal team on one side, and that client's own linked contacts (name + email) on the other, so you can tick the client people to invite without hunting for addresses. The company/client is stored on the meeting so it is ready to route later.
On a packed calendar day, the cell now shows the most time-sensitive things first — your meetings, then initiative dates, then tasks — so when a day has more than fits and collapses to "+N more," what stays visible is the meetings, not the tasks (which you already have on My Tasks).
Scheduling now also drops a record into the Meetings workspace right away, with the title, date, time, and the company or client, so you have a record that the meeting happened even before there is a transcript. When automatic transcripts arrive (a planned follow-up), they will fill into that same record.
Creating calendar events needs write access, so your next login will ask once to allow it (on top of the read access from before). As always, you can decline and still sign in; you just would not be able to schedule until you allow it.
Replies stop being copy-and-paste. You can now write and send a real email from any conversation - with formatting, a logo, your signature, and full Cc / Bcc / reply-all - and start a brand-new email to a client too. It sends through your own connected Google account, lands in your Gmail Sent, and shows up on the thread.
01Communication
Open a client email and hit Reply, Reply all, or Forward. You get a full composer - formatting (bold, lists, headings, links), an inserted logo or image, editable subject, and To / Cc / Bcc - and when you send, it goes for real through your own connected Google account. The message threads onto the conversation, appears in your Gmail Sent, shows on the thread here, and the client message is marked replied. The same composer opens everywhere a reply does: a conversation, the Inbox, the daily rundown, and an initiative.
A "New email" button on the Communication board opens the same composer to write a fresh email to anyone, not just a reply. If you have a client selected, the new email is filed under them.
Settings now has a "My profile" tab where you build your own email signature - your name, title, a logo, links - and it is added to the bottom of email you send. You can turn it off for any individual message right in the composer.
The From line lets you send from your own address or from a shared address like info@. Sending from another team member’s address needs a new "send on behalf" permission, so nobody sends as someone else by accident. It defaults to whichever of our addresses the original email came in to.
The composer has "Draft with AI" to write a whole reply from the conversation. On top of that, the subject and body carry the app's little AI companion: dictate with your voice, generate, and clean up - the same tools you have on fields across the app.
The To / Cc / Bcc fields suggest the email addresses linked to that company as you type, and an "Everyone at <Client>" button adds them all at once - no copying addresses around.
An admin can set one shared signature in Settings -> Communications. Anyone who has not built their own gets it automatically, so nobody sends a bare email. Your own signature always wins over the company one.
The composer opens in a large pop-up so you can see what you are writing. Reply, Reply all, and Forward stay available even after a message is handled (you might need to reply again or forward it later), and you can forward emails you have already sent.
Follow-ups planned on top of sending: out-of-office and delayed auto-responders (with optional AI), detecting bounced sends, and eventually retiring the old IMAP pull for info@ now that it runs on Google directly.
Your real meetings now show on the Calendar alongside your tasks and initiative dates, and connecting Google is no longer a separate step: signing in grants it all at once.
01Calendar
Once your Google account is connected, your calendar events appear on the Calendar in green, right next to your tasks and initiative dates. Click one to see its time, location, guests, and a join button for the video call. Zoom meetings that are already on your Google Calendar show up here too. Your events are read live from Google, nothing is copied or stored.
Logging in with Google now asks for everything in one go: your identity, your email, and your calendar. You no longer have to sign in and then separately "connect" your mailbox. If you signed up before this, your next login will ask once to add calendar access. You can untick anything you are not comfortable with and still sign in, connecting is never required to log in.
The meeting read-out stops being read-only. You can now set a date on any item right there (handy for the ones that left the meeting with no date), and turn an item into a task or a brand-new initiative with the client already filled in.
01Meetings
Each item has a "Set dates" control with the same four client-facing dates an initiative uses: Plan approval, First revisions, Due (send for approval) and Launch. A deliverable agreed in a meeting usually runs draft → revisions → live, and often still needs planning and approval, so all four are there. When you create a new initiative from the item, those dates prefill it, and the "Due" date carries into a task you create. (Showing them on the client recap is coming next.)
Alongside "+ Task", items now have "+ Initiative", which spins up a new initiative and files the item as its first task, so you do not have to create the initiative separately first.
When you turn a meeting item into a task or initiative, the meeting’s client is already chosen. It stays a normal dropdown, so if you discussed a sub-company in the same meeting you can still switch to it.
A meeting read-out can now become a clean, client-facing recap page at its own private link. You preview exactly what the client will see, then make the link live (it stays dark until you do), and you can turn it off or issue a new link any time. There is also a ready-to-send recap email with the link and the key dates to confirm. The recap shows the summary, decisions, key dates, who is doing what, and open items — not the raw transcript. You can also add a published recap to a review: in the review deliverables editor, "Add meeting recap" sits next to "Add deliverable".
Each action or open item now has an Edit button. You can correct the title, description and owner (for example, reassign it from one person to you), with the same AI helper the rest of the app uses on those fields (generate, clean up, dictate). The Summary and the Key decisions are editable too — edit a line, remove one, or add your own. Since the read-out is what you will share with the client, it is worth getting right.
The "Enrich meeting" read-out was missing action items on longer meetings, so it now works differently under the hood: instead of one pass that tried to do everything at once, it runs focused passes and then a second pass whose only job is to catch anything the first one missed. The result is a much more complete list of who agreed to do what.
01Meetings
On longer meetings the read-out used to drop commitments, especially smaller or operational ones and things said late in the call. It now pulls action items in a dedicated pass built for completeness, then re-reads the meeting to add anything that pass missed, so far fewer of your commitments slip through. Decisions, dates, chapters and the summary are each produced by their own focused pass too.
Settings, AI generation now has a Meeting analysis section. Each part of the read-out (action items, the verify pass, decisions and dates, chapters, and the summary) has its own editable prompt and its own model, so the read-out can be tuned without a code change. The verify pass can be turned off if you ever want to.
Enriching a meeting takes a couple of minutes, so it now shows a live checklist of the passes as they run, with a progress bar, instead of an unmoving button. It also tells you to keep the tab open while it works.
The read-out now records the priority or order of work the meeting settled on (do this first, then that) as a decision. And any action item that left the meeting without a date shows a "No date set" flag, so you can quickly confirm dates with the client afterward instead of everyone leaving with a different assumption.
A new Calendar in the sidebar, showing everything assigned to you on the day it is due, so you can see what is coming without hunting through your task list.
01Calendar
The new Calendar page puts every task assigned to you onto the day it is due. Flip between a full month grid and an Agenda list of what is coming up next. Overdue work is called out in red, and an urgent task carries a red dot, so the things that need you read first. Click a task to open its full pop-up right there, the same one you use on My Tasks. Completed work is hidden by default, with a "Show completed" toggle to bring it back.
Every date on an initiative you own now shows on the calendar, in blue, each one labelled so you can tell them apart: Plan approval, First revision, Due (send for approval), and Launch. Click any of them to open the initiative pop-up. So your task deadlines and your initiative milestones sit on one calendar.
The calendar opens on your own work, but if you manage the schedule you can switch it: a dropdown to see another person or everyone at once, and a dropdown to narrow to a single client. Both respect access, you only ever see the people and clients you are allowed to, so someone who only sees their own work still just sees their own calendar.
This is the foundation for bringing everything into one place. Still to come: your Google Calendar (so your real meetings, including Zoom calls already on it, appear alongside your work), Zoom transcripts flowing in automatically, and scheduling meetings from inside Status.
Two clean-ups to the create flows: a simple initiative now only asks for the date it actually needs, and creating a follow-up task now opens the same task form as everywhere else.
01Tasks & initiatives
When you create an initiative, the "does this need a plan?" question now comes before the dates. A minor update (no plan) then asks for just its send-for-approval date, with target launch optional, instead of being forced to enter plan-approval and first-revision dates that only apply when there is a plan. An initiative with no dates set is still never counted late.
The follow-up task pop-up had drifted out of date, with its own fields and an old Start-date field the normal form no longer uses. Creating a follow-up now opens the same "Add a task" form as everywhere else, so it always has the same fields. A follow-up now asks for a description like any other task, and its status and phase default sensibly (change them in the task pop-up). The follow-up-specific steps (which initiative, carrying deliverables, how it relates to the original) are unchanged.
Managers can now set a priority on any task or initiative, so the whole team can see what matters most at a glance, and work sorts itself so the important things rise to the top.
01Tasks & initiatives
Every task and initiative can carry a priority, set from the coloured icon next to where the work happens, or as a step in the create wizards. Urgent means broken or a deadline is bearing down; Standard is the normal on-time expectation; Flexible has slack and yields first if the schedule has to be rebalanced. It never moves a due date on its own. Priority is permission-based, set and seen by the people who manage the schedule.
The priority reads at a glance on the client board cards, the dashboard, the daily rundown, and the task and initiative pop-ups. On My Tasks, an urgent item is clearly flagged so it is obvious what to do first.
On the dashboard and My Tasks, an urgent item floats to the top whatever its date, and a flexible one settles to the bottom of its own date; everything else stays in date order. The most important work reads first without any manual reordering.
An automation template can carry a priority, so the tasks and initiatives it creates arrive already prioritised, the same field the rest of the platform uses.
A long-standing ordering quirk meant editing an initiative could bump it to the bottom of the board. Initiatives now hold a stable order, so an edit never reshuffles the list.
Creating a task or an initiative now checks the essential fields before it will submit, so you can no longer end up with a half-filled record.
01Tasks & initiatives
Both the guided "Add a task" wizard and the quick add-task pop-up now require an owner and a due date before they will submit — no more unassigned or dateless tasks that quietly land in Unscheduled.
A new initiative now requires an owner and its three client-facing dates — plan approval, first revisions, and send-for-approval (target launch stays optional) — plus a plan due date when it needs a plan, and a wake date when it is set to Future. The dates also sit one per row so they are easy to read.
A logged meeting now turns into an organized worklist (summary, decisions, dates, and action items grouped by person) that you can turn into tasks and file to initiatives in a click. Settings is also reorganized into tabs.
01Communication
Enriching a meeting produces an organized read: a summary, key decisions, dates and deadlines, action items grouped by the person who owns them, and open loose ends. The raw transcript drops to a collapsible section at the bottom.
Each item has a "+ Task" button that walks you through the client, then active / future / completed, then the initiative (or create a new one), and opens the task wizard already filled in with the owner, description, and due date.
The meeting is sliced into topic chapters (rename any that are off). Add a topic to an initiative and it becomes communication on that initiative and selectable context in the AI popup. It also appears in the Claude Code task brief for that initiative, verbatim, so a build session can read exactly what was said.
Any AI generate field with the Meeting picker now has a "By topic" option: pick a meeting, then a specific topic slice, and use it as context.
02Settings
The long single-scroll Settings page is now grouped into tabs (General, Communications, AI, QA, and more) with a matching submenu in the sidebar, so each area is its own pane you jump to. Permission gating is unchanged: you only see the areas you have access to.
Turn any thread or meeting into a plain-English summary, per-message one-liners, action items, and initiative links on demand, and draft a reply to any client message right in the thread.
01Communication
Each communication thread and each meeting has Generate / Regenerate enrichment buttons: a short summary, a one-line summary on every message (so you can scan a long thread without reading it all), owner-tagged action items and questions, and links to the right initiative. Regenerate any time — a re-run cleanly overwrites and keeps your checked-off items.
Every unanswered client message has a Reply button that drafts a reply to that specific message (with the whole thread as context), then the AI helper lets you refine it, dictate, or clean it up. On email you copy it; on Asana you post it with the optional Tag. Turn any action or question into a task through the full task wizard.
Settings → AI generation now also holds the thread and meeting enrichment prompts and the model they use, so you can tune how enrichment reads and writes without a code change.
A small AI helper now sits in the corner of most text fields. Dictate by voice, generate a draft from real context, or clean up what you wrote. The rules it follows and the model it uses are set in Settings.
01AI
Most text fields (task name, description, checklist, initiative name and description, comms replies, client details, and more) now have a small helper in the top-right corner. It opens a menu: Dictate (speak to fill the field), Generate with AI, and Clean up with AI. An AI edit never loses your text — an Undo link appears (and turns into Redo).
When you generate, you choose what to feed it: the task or initiative description, a communication (the whole thread, a summary, or a single message — handy for drafting a reply to one email), or a meeting (its summary, transcript, or action items). Pick what to produce (summary, detailed description, checklist, list, title, draft reply, or key points) and Fast / Balanced / Detailed. The result drops straight into the field.
Click the mic to speak into any field (Chrome, Edge, or Safari). Clean up with AI then tidies dictation — removes the ums and repetition and fixes grammar — without changing what you meant.
Settings → AI generation lets an admin edit the house rules (no em dashes, do not make things up), the assistant preamble, the clean-up prompt, and the default model, with no code change.
Communication is no longer just a count of what is open — it now grades whether we answer clients on time, and every message gets processed individually.
01Communication
The Communication KPI now reads the share of this month’s client messages we processed within one business day of them arriving — weekends excluded, so a Friday-morning message is due Monday morning. The live "awaiting our reply" count stays under it in red, so you still see what needs answering right now. Click the percentage for the history and average; click the count for the open threads.
Clicking the percentage opens a history of this month’s messages, each with how long it took to process and whether it beat the one-business-day mark (green or red). A banner up top links straight to whatever is awaiting a reply right now. Opening a message shows it in a pop-up so you never lose your place.
Each client message is processed individually (Replied, No reply needed, or Ignore). Archiving a whole thread is no longer a way to bury messages nobody decided on — archiving is blocked until each message has a decision.
The Timing score no longer counts something as late on the day it is due, you have until the next day. The dashboard now shows what is due today and tomorrow at a glance, and completed work reads correctly again.
01Timing
The client Timing score only counts an initiative as late once its date has actually passed. A stage due today is a heads-up, not a penalty, it only affects the score if it is still not done tomorrow. This matches the overdue badge, which already worked this way.
When the stages feature launched mid-month, initiatives that were already finished still sat at their first stage, so the score read them as late even though the work was done. Every completed initiative has been set to its finished stage, so Timing now reflects reality.
02Dashboard
Under Blockers, two new lists show what is coming due. On the Company view they list initiatives by their client date; on the Team view they list each person's tasks by their due date. Do Today is green, Do Tomorrow is white, and each row opens the item. They are a reminder of what to get done, not a penalty.
03Automations
An automation that creates an initiative now sets the same client-facing dates the rest of the app uses, Plan approval, First revisions, Due, and Launch. The old Start slot only shows when a template starts as Future (its wake date). The daily rundown now carries a single "done today" date instead of a stray approval date.
The review tool now opens ready to click, so a client can move through a plan the way a visitor would, and leaving a pinpoint comment is a single button away.
01Review tool
A web page now opens ready to use: open strategy tabs, expand sections, and look around exactly as a visitor would (you still cannot follow a link off the page). PDFs and image proofs open ready to annotate, as before.
A blue "Annotate & comment" button sits above the page (and "+ Annotate" is still in the Comments panel). One click switches on annotations and lets you drag a box and comment straight away, no more clicking twice.
While you annotate, an orange bar confirms you are in annotation mode; clicking and switching viewports pause so every box stays lined up, and an Exit button drops you back to clicking around.
Clicking a pinned comment now shows its box and scrolls to it even if you were clicking around the page, so you can follow feedback without switching anything on first.
An initiative now moves through clear stages (Strategy, Approve, Production, Refine, Deliver) with a date for each hand-off, and the client Timing score grades whether the client got their work on those dates, not the internal task dates.
01Initiatives
Every initiative moves through Strategy, Approve, Production, Refine, Deliver. You set the stage by hand: click a segment on the strip in the initiative pop-up (it confirms first), or the stage tag in the daily rundown. The card tags across the app now read the stage instead of an internal status.
Plan approval, First revisions, Due (send for approval) and Launch. They show in the initiative Dates section, in the create wizard, and under each stage on the strip so you can see the whole timeline at a glance. Launch means the day the client starts using the work, so it should be live and tested before then.
An initiative reads overdue when its stage has fallen behind where its dates require (for example, still in Production after the first-revision date), not simply when one date has passed. The card also shows the next stage deadline rather than a single fixed date.
Just like a task due date: pushing a stage date out asks the reason. If we could not finish in time it counts against Timing for that month even after the date moves; a client-caused move (added scope, client revisions) carries no penalty.
When every active task on an initiative is complete, its stage moves to Deliver on its own, and a review signal (a deliverable submitted for review, or a client approval) suggests the next move with a one-click nudge.
02Timing score
The Timing tile on the dashboard and each client now grades whether initiatives hit their stage dates. Each initiative with a date due this month counts once, and every missed date is its own penalty against the owner. Individual task on-time still lives on each person's own scorecard, unchanged.
The Timing drill-down (the late-work page) lists each missed stage date, and someone with permission can take back a single penalty that was a mistake, without touching the rest.
03Daily rundown & getting around
The Timing and work step flags any initiative whose date is blown, and the sign-off step lists them, so an overdue date gets reset and the client told the new date instead of quietly slipping. The "is everything on time?" check spells out that anything overdue or approaching and needing a reschedule counts as a No.
On the late-work list, clicking an initiative now opens the initiative pop-up to look at it, instead of jumping to the review-tool editor page.
A task opened from the rundown's Timing and work list now opens the full editable task pop-up, the same one you get by opening its initiative first.
The New initiative and Add a task wizards show a helper panel that changes with each step, explaining what to enter and why.
Start dates now mean one thing: when a parked (Future) initiative or task should reappear on the active board. They are hidden on active work, and moving something to Future is what asks for the date.
01Initiatives & tasks
A start date only matters for something parked for later, so it no longer shows on active initiatives or tasks. Active work just has a due date. This clears a field that was noise on everything you are working on right now.
When you change an initiative or task to Future, a prompt asks “When would you like this to reappear in active?” It parks out of your active view and automatically pops back onto the active board on that date. Creating a new Future initiative asks the same thing right on the Active/Future step.
A task created inside a parked (Future) initiative now inherits that Future schedule and its reappear date, instead of showing up as active work straight away. It stays parked and wakes onto the active board when its initiative does, so parked work no longer leaks onto the schedule.
When you log a company or client meeting you can now choose who on the team may view it: everyone with meeting access, admins only, chosen roles, or chosen individuals. It stays editable afterward.
01Communication
Logging a company or client meeting now has a “Who can view this meeting?” choice: everyone with meeting access, admins only, only chosen roles, or only chosen people (with a checklist of the team). Admins and the person who logged it can always see it.
Open a meeting’s transcript to see and change who may view it. Only an admin or the person who logged the meeting can change this. Meetings that are not open to everyone show a lock badge on the Meetings list. Note that meeting access itself is still the master switch: someone without meeting access does not see meetings at all, even if named on one.
The "Do Daily Rundown" button and the client cards now tell the same story: the button only turns green when every client has actually been signed off, and a quiet client you sign off reads "No activity for N days" instead of "Not started".
01Dashboard & daily rundown
Before, the button could turn green as soon as a client was opened during the rundown, even if you never reached its sign-off, so it could read "done" while a client card still said "Not started". The button now counts only clients that have been signed off, so green means every client is genuinely done, and an unfinished client keeps the button amber with a count of how many are left.
Signing off a client with no activity now reliably shows "No activity for N days" on its card, instead of occasionally falling back to "Not started" after it had been signed off.
When a client has had no activity since the last look, its one-click action now reads "Nothing to add, sign off" (it used to say "Skip to next client"). It always did record a proper "No activity" sign-off, and the label now makes that clear so nothing gets left unsigned by accident.
A small polish to splitting an initiative: the list of tasks you pick from is now sorted, and it shows at a glance which tasks are already done.
01Initiatives
When you split an initiative into a new one, the list of tasks to move is now in alphabetical order, and any task that is already finished shows dimmed with a line through it. You can still pick a finished task if you need to. Finding the right task in a long list is much quicker.
The dashboard and daily rundown got sharper: a quiet client now tells you exactly how long it has been quiet, the recent-communication list stops looking empty for clients who are actively emailing, the rundown status no longer resets itself in the evening, and creating a report or plan is now a deliberate choice so it gets the right template.
01Dashboard & daily rundown
When a client has no activity, the daily rundown now shows exactly how long it has been, for example "No activity for 3 days" or "No activity for 8 hours", instead of just "no activity". It counts from the last real thing that happened, a message either direction, a task created, edited or completed, or a new initiative, and it shows on the client card without opening the rundown. A client drifting for weeks now reads loud and clear.
The client card’s recent-communication list was skipping conversations that had been archived, so a client whose threads were all filed away read as silent even when they were actively emailing. It now shows the last 10 client emails and Asana messages, both directions, including from archived threads.
After about 7pm the dashboard showed every client as "Not started" even when the rundown had been done that morning, because it was rolling the day over on the server’s clock instead of ours. It now tracks the day on Central time like the rest of the app, so the day’s rundown status stays put until midnight.
02Creating tasks
When you add a task, "where the work happens" is now asked in two steps with nothing pre-selected. If it is in the working repo, a second question asks what you are building: a Plan, a Report, a Company Resource, or a Normal Task. This makes sure a report or plan gets its proper template, branding and rules, instead of quietly being treated as an ordinary task.
A round of improvements to client plans: anything you need from the client sits at the top where they can answer it right in the review tool, the internal owner is no longer shown to clients, the side-by-side "imports as" view can no longer silently break, and continuing work can appear on a plan without being re-imported.
01Plans
A plan can now open with a "What we need from you" block: the decisions, questions and assets you need from the client, gathered at the top so they never hunt for them. Each item is wired to the review tool, so the client answers it right there, and answered items tick off and dim. It is optional, so leave it out when you need nothing.
Plans used to print the owner on each initiative, which is an internal assignment the client should not see. It is now hidden from the client-facing view and kept only for the import, so Status still assigns the right person.
The side-by-side internal view (what Status will import, shown when you add ?internal=1) used to depend on a few pieces being hand-carried in the plan, and dropping any of them broke the two-column view while the client view still looked fine. It now rebuilds itself from the plan’s markup, and the review and internal scripts are added automatically when you publish, so it just works.
Work that carries over from a previous month and is already tracked in Status can now stay on the plan for the full picture without creating a duplicate: mark the initiative to skip import and it reads as normal work to the client, is flagged “Not imported” in the internal view, and is left untouched on import.
Behind-the-scenes work to keep the platform and its data safe. Your data is now backed up automatically every day to a separate, independent location, the database hosting was upgraded for managed backups, and there is a written step-by-step plan for restoring the whole system if it were ever needed.
01Reliability
A full copy of the database is now saved automatically every morning to a separate, independent store, so the data is protected even in the unlikely event the main hosting became unavailable.
The database was moved to a paid tier that adds managed daily backups and removes the idle-pause behaviour of the free tier, so the platform stays consistently available.
There is now a documented, step-by-step runbook for rebuilding the entire system from backups, so recovery is a known, repeatable process rather than a scramble.
Team member records are properly editable now, and every new hire records their GitHub username during setup so we always know who to add to a repository.
01Team members
Settings, Team members now holds a GitHub username for each person, so when you add them to a client repository you always know their handle. New hires enter it during setup: on the Create your GitHub account step they save their username before they can tick the step off.
The Team members panel now lets you edit a person’s name, GitHub username, role, notes and whether they are active. Changing a name updates it everywhere their work is assigned, so nothing gets orphaned.
A member’s email is shown but no longer editable there, because it is the Google address they sign in with. It is set from their login, not typed in by hand.
Two small fixes to the Comms Hub: an initiative conversation now shows the newest message at the top like everywhere else, and logging a conversation narrows the initiative list down to the client you pick.
01Communication
The Communication tab on an initiative was listing messages oldest first, out of step with the rest of the app. It now shows the newest message at the top, so the latest thing is what you see first.
On Log conversation, picking a client now limits the initiative list to that client, and an Active / Future / Completed selector filters it further, the same way the board and the task picker do, instead of listing every initiative at once.
A guided run-through for the daily status meeting. It walks you client by client, then person by person, so you sit down already knowing everything. It will not let you skim past anyone, and it turns what you find into tasks on the spot.
01Daily rundown
Do Daily Rundown on the dashboard opens a wizard that takes you through each of your clients, then each person, one at a time. The button shows your progress: red for none done, amber for some, green once everyone has been walked today, with a small number for anyone who has had new activity since.
Every client and every person has to be gone through once a day. Skip to next only appears once you have signed that client or person off, so nobody gets skimmed past. Each one opens on a short catch-up: their last notes, and what has changed since.
For each client you answer three checks (do we know their due dates, is everything on time, are we waiting on any assets from them), then write a short summary for the meeting. Anything that needs action asks for a note and lets you hand it off as a task on the spot, choosing which initiative it belongs to and who owns it.
The communication step lists what is awaiting a reply. Click a message to read it in full and mark it replied, no reply needed, or archived without leaving the rundown, and it drops off the list. Internal team comments no longer count as client communication.
Mark each blocker On track, Needs strategic input, or Red flag; see where the person sits on capacity for the month; and give the client one status for the meeting (All clear, Needs strategic input, or Red flag) with the details of anything needed.
Everything you note is saved as you go. The Daily rundown drill-down on each client card shows every walk you did that day, newest first, each with its time, so a second look later in the day is its own report rather than overwriting the first.
Two reliability touches: completing a task now gives you a moment to undo it, and if the platform ever briefly cannot reach its data, you get a clear "try again" instead of a page that hangs.
01Tasks
The complete checkbox ticks on a single click, which is easy to hit by accident. Now, whenever you complete a task, a message appears with an Undo button for ten seconds that puts it straight back. This works everywhere you can complete a task: the client board, the task pop-up, and your task lists. If a timer is still running, the existing "your timer is still running" prompt comes first, exactly as before.
02Reliability
When the database was briefly unreachable, every signed-in page could hang for up to a minute before giving up. The platform now stops waiting after a few seconds and shows a calm "having trouble reaching its data, try again in a moment" screen instead of a frozen page. It does not prevent the blip, it just turns a long freeze into a clear, quick message.
A small but easy-to-forget one: if you move a task forward while its timer is still running, the platform now catches it and asks you to stop the timer first.
01Timer
If you submit a task to QA, or mark it complete, while its timer is still going, we ask before moving it: stop the timer and carry on, or keep working (which cancels the move and leaves the task where it is). You cannot end up with a timer quietly counting on a task that has already moved to someone else. Your time is logged the same as always, and a note is added to the task saying the timer was stopped because the task advanced.
Everything a brand new person needs to go from "just hired" to "working their first task" is now built into the platform. They sign in and get a guided Setup checklist, and they cannot reach the rest of the app until it is done. Roles decide what they see after that, and a help icon on each page explains the screen they are looking at.
01Getting started
A brand new person signs in and sees one thing: Setup. Eight steps - your details, set up Claude, create a GitHub account with your SGA email, get your work shared with you, get and connect your Status key, connect your email, set up your folders and copy your work down, and read the guide. When the last one is ticked they are let into the platform on My Tasks. No one has to walk them through it.
Instead of telling a new starter to open a settings file they have never heard of, Setup creates their key, gives them a copy button, and hands them a ready made message to paste into Claude Code that opens the right file for them. The key itself is never pasted into a chat, so it cannot get flagged as exposed.
The folders step draws the SGA Working folder tree with your own clients in it, and example folders if you do not have any yet, so you can see the shape you are building.
Steps that depend on things outside the platform cannot lock you out. If keys or email connecting are not switched on in an environment, those steps tick themselves and say so. If connecting your email keeps failing, after a couple of real attempts you are offered a way to skip it and carry on.
The Google screen now asks which account and pre-fills your SGA address, rather than silently using whichever account your browser happened to be signed into.
02Roles & permissions
The ladder from Associate up to Director of Operations now exists in the platform. Each level is a saved bundle of capabilities you can edit in Settings, so you set someone up by picking their level instead of ticking twenty boxes.
Pick a role on the permissions editor and it fills in that level for you, then you choose which clients and teammates they can see. Applying a role resets that access, so an Associate locks down automatically and you grant client access only to the people who need it.
My Tasks, Submit and Help. Dashboard, Clients, Communication, Reviews and Deliverables are all behind client access, which an Associate does not have. Being given a client folder on GitHub does not give you that client inside Status.
Someone signing in for the first time is created at the lowest rung and locked down until a manager promotes them, rather than inheriting whatever the default happened to be.
03Help
A circled question mark at the top right of the screen slides out a panel with help for that exact page. It is the same documentation as the Help section, sliced by page, so the two can never disagree.
Signing on and off, your KPIs and why they matter, your tasks and your inbox, which task to start and exactly how to open it in Claude Code, the timer, and what each stage means - including which ones need you and which are just waiting.
The Help section is one long page with its own menu, and it is permission based: you only see the parts that apply to what you can actually do.
04Fixes
When an admin used "Log in as" to see the app as a teammate, the admin’s own activity was being written as that person’s availability, so people who were off work showed as online or on a break. Viewing as someone is now read only.
The Comms Hub is now two tabs. Threads is the board you know, tidied up. History is new: every individual message, newest first, so you can rip through a queue - reply, ignore, archive - without hunting through conversations. Everything you do there is instant, no page reloads.
01Comms Hub
"Needs response" and "Needs action" were two numbers for one idea - the ball is with us. They are now a single Needs attention tile (a reply we owe, or work we owe). "No action needed" is gone.
They used to be small pills below the board. They are now proper tiles with live counts, alongside the rest.
Each view now has the same "?" helper as the KPI tiles across the platform - what the number means and how it is measured.
02Comms Hub
A second tab that lists individual messages newest-first, 20 to a page, instead of grouping them into conversations. Each message shows which thread and initiative it belongs to - click through to the conversation or the initiative. It replaces the old per-client "Comms history" tab.
Needs attention, Unmatched, Incoming, Outgoing, Internal, External - each a tile with its own count. Click to toggle them on and off, in any combination; deselect everything to see it all.
Mark replied, No reply needed, add a sender to the ignore list (this address or the whole domain), and archive a single message - all on one line, right on the card. Archiving hides a message from the feed without deleting it; a "Show archived" toggle brings them back to unarchive.
Defaults to the last 30 days so the feed stays fast as mail piles up. Widen it to look further back.
A dedicated view for mail we could not match to a client - a quick place to work through it in bulk and map or ignore each sender.
03Comms Hub
Opening a conversation now shows the newest message first, with the reply box at the top - no scrolling to the bottom every time to see what just came in or to respond.
It used to quietly refresh in the background and look like nothing happened. Now the badge flips right away, a toast confirms it, and the count updates - with no page reload.
The system is new, so some penalties will be wrong. Now they can be taken back: an admin (or anyone given the new permission) can remove a penalty from a KPI drill-down, and clear everyone at once to start from perfect.
01Scorecards
On the Timing (late work) and Quality (out of spec) lists, tick one or more rows and Remove penalty. The task stops counting against the score, and the tile and the list update together. You can add a reason. It is a soft, recorded change (who, when, why) that can be undone, not a delete.
One action clears every current penalty for everyone, on-time misses and out-of-spec bounces alike, so all KPIs start from perfect. Future penalties still count from then on. For when the team is settled in and you want a clean baseline.
Removing penalties and resetting need a new "manage KPIs" permission (admins have it automatically). A person cannot clear their own penalties.
The full Deliverables explorer and the Reviews hub are now tabs on a client, scoped to that client, the same way Communication already is. One system, two places: the whole thing across every client, or just this one, in place.
01Client view
It used to be a simpler read-only list grouped by initiative. It is now the same tool as the global Deliverables page, pinned to this client: search, the category and review-status filters, the diagnostic lenses (history gaps, not-in-review, internal, archived), version history, permanent links, and the where-it-is-linked editor. Sub-companies are included on a parent, and a sub-company page shows only its own.
The Reviews hub, scoped to one client and dropped in beside the other tabs. Same cards, same lifecycle filter, same "New review" picker, the client filter hidden because you are already on the client. It reads from the exact same code as the global Reviews page, so the two can never drift.
The owner moved from under the scorecard to a small superscript beside the company name, so who owns the client reads at a glance right where the name is.
A round of small fixes to how you open and share work: the My Tasks card itself, the links on the task and initiative pop-ups, and the one control that did not belong on an initiative.
01My Tasks
The whole title and info area of a My Tasks card now opens the task pop-up. The separate "View / comment" link and the delete link are gone: the card itself is the way in. The controls inside it (the work timer, the status buttons, the initiative link) still do their own thing.
It now uses the same styling as "Work in Claude Code" and "Work outside Claude Code", so it sits as a third equal option in the row instead of standing out in amber.
02Tasks
Both the full editable pop-up and the quick view now carry a Full context link beside Share and Follow-up. It opens the one-shot task brief (everything a person, or a Claude Code session, needs to pick the task up cold) in a new tab.
The task pop-up had two follow-up links that looked the same but were not: a plain add-task form and the full Follow-up flow. They are now one link ("+ Create follow-up task", above the description), wired to the full flow: choose the initiative, carry the deliverables forward, and set how the follow-up relates to the original.
03Initiatives
The Share link now shows on the read-only quick look too, and no longer depends on how the pop-up was opened, so an initiative can always be linked to.
The Communication tab of an initiative pop-up had a standalone Add Task button carried over from the Comms Hub. Inside an initiative you are already in the initiative, so it made no sense (it even claimed the conversation was not linked to one). It is gone. Turning a still-open item into a task stays, and now files straight under this initiative.
Knowing which clients are waiting on us is the whole point of the Comms Hub, and it was being guessed at. Now it is recorded, per message, by a person.
01Communications
Not the thread — the message. Each one shows Needs reply until somebody marks it Mark replied or No reply needed, with an Undo if you mis-click. The thread still shows Needs response while any of its messages is outstanding, so the board and the counts work exactly as before; what changed is that the answer underneath is now true rather than inferred.
Since threads can be merged, one thread holds several email chains, subjects and people. The old rule was "did we speak last on this thread", so answering one chain marked the whole thing handled — including a chain nobody had replied to. Checking the live data, that was hiding five genuinely unanswered client messages, among them an approval request from June 18 sitting inside a thread that looked dealt with.
An outbound email does not prove any particular message was answered, and most replying happens where the system cannot see it — on the phone, in Asana, or from an address we do not read. Of 83 client emails, only 14 had a reply the system could match. So it no longer guesses: a person clicks, or it stays on the list. About five messages a day.
Everything already in the system counts as handled except the newest client message on each open thread — so day one starts at 17 outstanding, matching what the board already showed, instead of surfacing years of old mail. Older messages are still sitting in their threads and get read when the thread is opened.
Three things from Chad reading the merged threads: the board showed the same five numbers twice and you could not click either set, the initiative pop-up was missing everything that lives beside a conversation, and enrichment could still overwrite an answer it no longer owns.
01Communications
Click Needs response and the list below is those threads; click it again to go back to everything. The active one is ringed in gold so you can always see which number the list belongs to.
The Metrics tiles and the Views chips were four-fifths the same five numbers — one set readable, the other clickable. They are one set now. “Needs action” was the tile with no matching view, so the one figure you could not drill into is now the one you can, and Unmatched and Archived move to a smaller row because they are parking states rather than scoreboard figures.
The old tiles counted over a slightly different set than the chips did — the tile included unmatched mail, the chip excluded it — so the same label could show two different numbers on one screen. Each figure is now by construction the count of exactly what clicking it shows.
02Initiatives
What is still open (tick it off, or turn it into a task), the links and assets on the thread, and the agreed next step — beside the timeline, the same way the Comms Hub shows them. Before a merge it gathers the items across every thread on the initiative, so nothing hides on the second one.
The initiative pop-up got wider everywhere it opens, so the timeline and the rail sit side by side instead of squeezing each other. It stacks on a narrow screen.
03Communications
It is worked out from who spoke last, on every message that arrives — so it is right whether or not enrichment has run. Enrichment is no longer able to write it at all: a summary written days ago should not be able to overwrite what the inbox knows today, which is exactly how 15 threads came to read “no action needed” after the client had replied. Enrichment keeps what only judgement can do: the one-line summaries, the extracted items, and the suggested reply.
Two calls from Chad while testing.
01Your work
The clock stops when work leaves your hands — but only if it left ON TIME. Something already past its due date when you submitted it keeps its red Overdue flag, and keeps it until the due date is actually moved. Moving the due date to the day it was handed over is what clears it. This also puts the badge and the on-time figure back in agreement: before, a late hand-off quietly dropped the badge while the KPI still counted the miss.
The hole: miss your date by a day, hand it to QA anyway, QA bounces it with revisions, someone moves the due date out — and the month scored it on time. The original miss simply vanished. On-time credit is now given up at the moment work is handed over past its due date, so no later extension can undo it. It is decided by the dates rather than by which reason somebody picks in a dropdown, which matters because the person moving the date after a QA bounce is usually the reviewer or the PM, not the person whose score it is. Two existing tasks were flagged; nobody's percentage moved, because both were already counted as misses.
02Communications
The tab was rendering a cut-down version of a message, so the ⓘ panel — subject, who it was from, who it went to, cc, date, channel, message id — was missing, along with the channel tag and the distinct styling for internal notes. It was a second, poorer copy of something that already existed. The tab now uses the SAME message card the Comms Hub does, so there is one renderer and nothing to forget to update twice.
The channel tag read the thread’s channel rather than the message’s. That was harmless until threads could be merged — a merged conversation holds several channels at once, so every message took the surviving thread’s label. SBMF Blood Drive would have shown all 96 messages as Asana, including its 13 real emails.
It only appeared when more than one thread was grouped together, so merging — which turns several threads into one — removed the tags exactly where a conversation had become most mixed. It now shows whenever the messages actually span more than one channel, which is the thing it was always trying to say.
03Everywhere
These rules decide how people are measured, so they should be readable rather than technically present. Each "?" now opens with one sentence saying what the number is, then the rules that decide it as separate points — including the ones you would otherwise only discover by being surprised: that on-time is judged on the day work left your hands rather than the day it closed, that however long QA takes cannot make you late, that handing something over after its due date is a miss which a later date change does not undo, and that undated tasks are not counted at all, which is why the figure is out of fewer tasks than your completed count.
A test now checks that the on-time help actually states each rule the calculation applies. If the way a score is worked out changes again, that test fails until the wording is updated with it — so what you are told and what is computed stay the same thing.
04Communications
A merged conversation used to keep whichever subject line happened to be oldest — "Re: FW: shirt design" standing in for the whole of an initiative's communication, which reads like one email chain swallowed the others. The surviving thread is now named after the initiative. The preview says so before you confirm, and the three threads merged before this rule existed were renamed to match.
Follow-ups from testing the clock-stop. The rule was right but it had only been applied to work still in flight, so this month's finished work was still being scored the old way.
01Your work
The clock-stop was only applied to tasks still in flight, so anything already closed kept its old verdict — and two of Katherine's tasks were still counted as missed even though both went to QA ON their due date. Every task is now scored on the day it left the doer's hands, finished or not. Her on-time for the month went from 50% to 100%; company-wide, 11 tasks were corrected. Genuinely late work stayed late.
QA review, then Ready to send, then Awaiting final approval is one hand-off, but the correction pass was reading the last of those steps rather than the first — which understated how long something had been waiting and could turn an on-time hand-off into a late one. The rule now lives in one tested place that both the app and the database correction use, so they cannot drift apart again.
It used to say just "2 missed", which cannot be squared with the Completed tile next to it: that one counts everything you finished, On-time counts only tasks that HAD a due date. Five done and two missed reads as 60% while the tile says 50%. It now says "2 of 4 dated missed", so the two tiles add up on sight. The "?" on the tile also explains that on-time means the day you delivered, not the day QA closed it.
02Initiatives
PeakSpan's Summer Sale Promo showed "No plan" next to a "Change plan" button and an import strip — because the initiative pointed at a plan deliverable that had since been retired, and a retired row is filtered out of every list. Three things caused it and all three are fixed: pasting a plan link made a NEW deliverable every time instead of reusing the one already there (that initiative had four rows for one plan); ".../plan/" and ".../plan" counted as different plans, which is how the duplicates got past each other; and retiring a deliverable left any initiative pointing at it dangling. Retiring now re-points the initiative at its live plan, or clears it honestly.
Where an initiative points at a plan that cannot be found, the header now reads "⚠ Plan link broken" rather than "No plan". They are different problems and only one of them is fixed by setting a plan.
The section is collapsed by default, which is right, but collapsed looked identical whether an initiative had a plan or a review or neither. The header now carries both links — "Open plan ↗" and "Open review tool ↗", each opening in a new tab — and says "No plan" / "No review" when there is nothing to open, so the collapsed state states both facts. The split is deliberate: the two links that just GO somewhere are on the header, and expanding is for everything that CHANGES something (change the plan, edit review deliverables, import tasks from the plan, split the initiative).
Four changes with one idea behind them: you should be able to reach an initiative, and its conversation, from wherever you happen to be standing — and an initiative should have ONE conversation rather than ten boxes to keep tidy by hand.
01Initiatives
The initiative pop-up now opens on a Work tab — everything it showed before, unchanged — with a Communication tab beside it holding the full conversation linked to that initiative. Seeing what the client said no longer means leaving the work: the "Comms ↗" link that threw you out to another page is gone from the pop-up, replaced by the tab.
If nothing is attached, the Communication tab says so and offers a picker of that client's conversations to link one on the spot. It only offers threads that are not already another initiative's work, because linking is an assertion that the thread IS this work.
Opening an initiative fires no comms fetch at all — the Communication tab loads on its first open and then stays loaded, so switching back and forth costs nothing.
02Communications
An initiative that collected a separate thread per email chain (one had eleven) can now be folded into a single conversation from its Communication tab. It shows you exactly what will move, and what will be kept separate and why, BEFORE anything happens — merging deletes the source threads and cannot be undone.
When a new email chain is confirmed onto an initiative that already has a conversation, it now folds in automatically instead of opening thread number eleven. Deliberately cautious: it only fires when there is exactly one existing thread, when the thread belongs to just that one initiative, and when both are the same client. Anything else waits for a person and the preview.
Merging deleted a thread outright, and both the mail and Asana pulls find their thread by a stored key — so the next message keyed to a merged-away thread would have opened a fresh one and split the conversation again, on a timer. Merges are now recorded and redirected, so a later message lands in the thread its conversation was merged into.
What was merged, into what, how many messages it held, by whom, and whether it was automatic. Merging used to destroy a thread with no trace at all.
A thread mirroring one of the client's Asana tasks stays linked to that task. Where two of them would collide, the second is kept separate and the preview tells you why, rather than quietly cutting a task loose.
03My Tasks
Every card names the project the task belongs to, and that name was plain text — you could see which initiative it was, but not look at it. It opens the initiative now: the full editable pop-up (tabs and all) if you have permission, and the read-only quick look if you do not, exactly like the View / comment control beside it.
04Clients
Communication was the one client tab that behaved differently from all the others: it launched the Comms Hub in a new browser tab with the client pre-filtered. It is now a tab like Board and Schedule — same board, same metrics, same views, same thread pop-up, scoped to that client.
The client dropdown is hidden there, exactly like every other client tab. Sub-companies roll up into the parent's view, the way their work does everywhere else.
Three fixes that all had the same shape: something was true in one place and quietly not true in another. A task in QA was being counted as late against the person who finished it on time. A client reply was not registering as needing an answer. And an initiative with a plan attached claimed it had none.
01Your work
You finish something on its due date and send it to QA. QA is its own task, so yours keeps its owner and its due date — and turned red overnight while someone else reviewed it. Now the clock stops the moment work leaves your hands. A task in QA review, QA revised, Ready to send or Awaiting final approval shows how long it has been waiting ("In QA · 2 days") instead of an Overdue flag. When this went live, 7 tasks were showing as overdue purely because they were sitting in QA, 6 of them delivered exactly on their due date.
The on-time figure compared the day a task was CLOSED against its due date — and a task only closes once QA has passed it. So every day your reviewer took came off your score. It now measures the day the work left your hands. A slow QA turnaround cannot make you late, and the drill-down list behind the number uses the identical rule, so the tile and the list can never disagree.
Nobody escapes by this. The QA task is an ordinary task with its own owner and its own due date, so it goes overdue on the QA-er's list when they are late. And a task that was already past its date when it was handed over still records the miss — it just stops nagging the person who no longer has it. The waiting chip turns amber after two days, so a stalled queue is visible without reading as the doer's fault.
The alternative was to push the due date out to match the QA task. That would have hidden the real deadline and needed someone to remember to move it again every round. Nothing about your dates changes — only what counts as late.
02Communications
When new mail landed on an existing email thread we updated its timestamp but never re-checked whose court it was in. So a thread we had marked as handled stayed marked as handled after the client wrote back — it dropped off "Needs response" and out of the awaiting-a-reply count entirely. The Asana channel always did this correctly; email never did. It now re-derives after every message, on both channels. 15 threads where the client had spoken last were corrected on the spot.
A note between us on a client thread was being read as "someone spoke last", which could flip a thread either way. Only real inbound and outbound messages decide it now.
When we are deliberately waiting on the client for something, us being the last speaker is exactly what that looks like — so recomputing used to wipe it back to "no action needed". That judgement now sticks until the client actually writes back.
A thread started by an outgoing email was created flagged as needing a response. It is seeded from the direction of the message that opened it now.
03Initiatives
Opening an initiative from the Dashboard showed no plan strip and offered "Set initiative plan" with an empty picker, even when a plan was attached — while the same pop-up opened from the client Board showed it correctly. The Dashboard was not passing the initiative's deliverables through, so the plan could never be found. It does now.
The plan picker only searched initiative-level deliverables, so a plan attached to one of the tasks never showed as the current selection. It searches all of them now.
If an initiative points at a plan the card cannot resolve, it now still shows the plan strip rather than silently claiming there is no plan. Quietly telling you there is nothing there is the worse failure.
A deliverable added to a review as a plain link behaved differently from one submitted through the tool: the Edit list save could not remove it, so it came straight back after every save. It is also why a review could show two entries with the same name with no way to clear either.
01Review tool
Saving the deliverable list reconciles against what the review currently shows, not only the entries that carry an internal address. A deliverable added as a plain link (which has no such address) can now be removed and stays removed, and a leftover duplicate of the same name is cleared out with it.
When you keep a link-added deliverable and save, the editor updates the existing entry in place and gives it a proper address, instead of creating a second copy alongside it.
A client can create a task in their Asana, we pull it in and build a plan from its description, then they edit that description hours later. That edit used to never reach us, so our record (and the plan built on it) silently fell out of step with their task.
01Communications
The Asana channel stored a task description once, when the thread was first pulled in, and never looked again. Now when the description changes we add a "Task description was updated in Asana" message to the thread carrying the new text, so it lands in the timeline like any other message and is impossible to miss.
Opening an Asana thread re-checks its description live against Asana right then, so a change shows immediately. The 10-minute pull is the backstop for threads nobody opens. Either way the update is timestamped when we learn of it, so it appears at the end of the thread where new things arrive, not buried back when the edit happened.
The template page stopped being an import form a while ago. It is now the library of the documents we produce for a client — the two plans, side by side, each shown as the versions it moves through over its life.
01Templates
The library of the documents we produce for a client — the initiative plan and the monthly plan, side by side. The old /import link still works.
Every plan opens on the work (the schedule: goal, deliverables, owners, dates) with a second tab for the strategy (why, purpose, goals, target audience, tone, how). The client can read just the work, or the thinking behind it. This replaces the earlier full / work-only / hybrid split with one plan and two tabs.
An initiative plan goes Plan → Update → Wrap-up; a monthly plan goes Plan → Mid-month → Report. All six are now real, viewable examples: the update shows what is done, in flight, and added since last time; the wrap-up shows what was delivered and how it went; the report rolls the month up initiative by initiative. Each version is the same deliverable, superseding the last, with earlier versions kept in the review tool.
Viewing a plan example happens inside Status (the sidebar stays, the example renders in a panel), not a bare page in a new window. A bar above it picks the plan from a dropdown and switches between three views: Client view (the filled example), Internal (the example plus what Status will import), and Blueprint (every value shown as a variable, with what each field is for, for a Claude Code session to fill in). Plus the Markdown download.
The strategy tab carries none of the markup Status imports, so hiding it never changes the initiatives, tasks, owners or dates. A test strips it out entirely and confirms the import is identical, so it cannot drift.
A deliverable is not one "build it" task. The example initiative plan now runs the real process: research and a swipe file, then decide the strategy and get it approved, then copy, then a mockup and approval, then build. The guide tells anyone writing a plan the same thing: if the information does not exist yet, getting it is a task, and a task must leave no room for questions.
A plan can now mark a task dependency as one it works on (edits or continues that work) or one it references (context to match, not to change) — data-sga-task-depends-on and data-sga-task-references. The import sets the right type, so a task carries into Status knowing whether it should touch what it depends on.
Marketing work falls apart when copy is written away from the layout and then does not fit it, so the example plan stopped splitting "write the copy" and "design the mockup" into two tasks. It now decides the direction and gets it approved, then designs the page with the copy as one approved mockup, then builds. If the client supplies their own copy, we fit it into the design.
The example update gathers every question and asset request into one "What we need from you" section at the top, above the work, because a client skims and may never reach the bottom. Every update also links what it produced (the direction, the mockup, the live preview), so nothing has to be hunted for.
The example strategy tab describes a real person (who they are, what they want, where they spend time, their problem, what we offer) instead of listing platforms. Where we reach that person is shown separately, as Reach.
The monthly report reads like the real month of work (written, proofed, approved, built, sent, and measured, with where it went and the result) rather than a one-line tick, so the value of the work is visible to the client.
02Automations
With a Templates section now in the sidebar, the automations page says "automation template" where it used to just say "template" — two different things that were one word apart.
03Working repos
When a Claude Code session starts a task to author a plan or a report, the task now carries everything it needs to build and submit it: the full build guide, where the file goes, live examples, and the submit steps. Nothing has to be downloaded or explained separately. The guide is generated from the importer’s own rules, so it cannot drift.
Before it builds anything, a session must answer five questions on the record: is there enough information, do we know what it should look like or are we inferring, are there hidden tasks that should be their own, are there open questions, and what are we doing about it. If anything is missing it must create the tasks or ask the questions first, never proceed on a guess. It is judged against the three KPIs: Quality, Timing, Communication.
Adding a client collected three fields. Editing one collected eleven. So every client created in the app started life incomplete, and the only fix was to go and edit it — which is also the only place you could say it was a sub-company.
01Clients
Timezone, monthly capacity, description, brand hub, assets, Drive folder, repo, live site and parent company were all edit-only. Add and Edit are now the same form, so anything added to one appears in the other and a new client can be complete on the day it is created.
There was no way to create a client as a sub-company. You added it, went to its page, found the pencil, and set the parent there — and the parent picker lived on a page you would have no reason to open. Base companies now have an "Add sub-company" link that opens the same form with the parent already set.
The file host link was "Files URL" when adding and "Assets URL" when editing. It is one field with one name.
Four values lived in two places at once — as a status and as a blocked reason meaning the same thing. A task could disagree with itself. They are blocked reasons now, and only that.
01Statuses
Waiting on client assets, Needs strategic input, Waiting on dependency and On hold have come out of the status list. They were always available as Blocked reasons too, which meant the same fact could be recorded in two places and the two could disagree. A status now says where the work has got to; the Blocked field says why it is not moving. Work already set to one of them was moved across — its status reads Not started and the reason it is waiting is on the Blocked field.
Awaiting spec approval and Awaiting final approval look like waiting states but they are stages of the work — the quality score is measured by what is sent for approval and what comes back. They were the ones doubled up on the initiative Blocked dropdown, so that is the copy that went.
Choosing "Awaiting spec approval" or "Awaiting final approval" from an initiative’s Waiting-on dropdown was silently rejected by the database every time. Set the status instead — which is now the only way it is offered.
The check that stopped on-hold work being pulled into QA was reading the old status names. It reads the Blocked field now, so genuinely parked work stays parked.
Three things that had been made redundant by later work and were still getting in the way: two client tabs the Board replaced, a permission that hid work from the person doing it, and a read-only pop-up on the one list where you most want to change something.
01Clients
Both were list views of what the Board already shows, and everything you could do on them you can do on the Board. The Board is now simply the client page. Completed initiatives are on the History tab, which can also reopen them, and tasks that are not linked to an initiative are still flagged above the Board.
02My Tasks
Each person had a permission listing which statuses they were allowed to see, and anything outside it was dropped before it reached the page. That made sense when My Tasks was a single list. With In Progress, Next Up, In QA, Ready to send, Awaiting approval and Blocked, it meant the last four tabs were permanently empty for most people — a task moving into QA simply vanished from the list of the person who put it there. Every open task assigned to you now appears, sorted into a tab.
The setting is still there, renamed "Statuses they can set" — it controls which statuses someone can move a task to, not what they can see.
03Dashboard
Clicking something in the Overdue or Blockers list opened a read-only quick look, so the one thing you came to do — move the due date — meant finding the task again somewhere else. It opens the editable task pop-up now.
A deliverable used to be a link with a label, pinned to one initiative, remembering some of where it had been. It can now carry its own version history, be passed between tasks as work moves, and be found without knowing which task made it.
01Deliverables
Every deliverable across every client, with filters for client, category and tags, and a search that covers the name, the description, the tags and the work it came out of. Before this the only way to reach a deliverable was to already know which task or initiative made it.
Every deliverable now has its own address that always resolves to the current version — and /d/<id>?v=3 to a specific one. Use it instead of copying the file URL: that URL is a path produced by whichever task uploaded that version, so it goes stale the moment the work moves on. Internal links across the app now use it.
Versions used to be three strings in a list — no author, no date, nothing that could be referenced. They are now proper records, so a version can be pointed at, and the hours and QA answers from the upload finally attach to the version they belong to.
A deliverable can be attached to a task or an initiative, as something you are working on or as a reference. As work moves — mockup, then functionality, then revisions — it goes with it and stays one deliverable. A deliverable is worked on by one task at a time, so handing it over releases it from the finished one.
A landing page can hold its confirmation page and a split-test variant. Each stays a full deliverable with its own versions and review; the parent just groups them.
The review editor could not tell a rename from a removal, so renaming a deliverable deleted it and detached the client comments on it. It is archived now, and the comments stay attached.
02Submit
The name you typed was being turned into a slug before it was saved, so "Sales Page" was stored as sales-page. It keeps what you wrote.
Submitting used to put a deliverable in the client review automatically. There is now a checkbox, on by default.
Submitting a monthly report used to create no deliverable at all — it was recorded and then invisible everywhere. A report or a plan is a deliverable like anything else, and an initiative plan now attaches itself as the plan.
The hours box wrote a number that never reached the task, the capacity bar or any KPI. Time comes from the timer.
03Tasks
Reopening a finished task rewrites history and muddies who completed what. Reopen still exists, but it now asks: if it was closed by mistake, reopen it; if it was finished correctly and there is more to do, create a follow-up instead — which keeps the completion record and carries the deliverable forward.
Creating a follow-up from a finished task lets you bring its deliverables with it, and any sub-deliverables come along with their parent.
A dependency now records whether you are building on that work or only referencing it — so whoever picks the task up, or Claude Code on /start, can tell "continue this" from "read this and leave it alone". It shows on the task and can be changed there.
Three small things, one of which was quietly costing you work: the My Tasks inbox had stopped noticing anything created since we left Asana.
01My Tasks
The My Tasks inbox was only looking at tasks that still carried an Asana reference — which meant every task created since we came off Asana was invisible to it. No "assigned to you", no "someone commented", nothing. If it has felt quiet lately, that is why: the notifications were never sent, not missed. It now looks at tasks the way the rest of the app does, so comments and new assignments show up again regardless of when the task was made.
02History
On a client’s History tab, the Reopen control was only appearing on older tasks — anything completed since the Asana exit had no way back. It now shows on every completed task and initiative. Worth saying: reopening is often not what you want. If work comes back on something already finished, a fresh follow-up task usually reads better than resurrecting a closed one, and that is what we are building next.
03Time
Starting a timer while another is going now says so, names what is running and for how long, and offers to pause it — or to leave both going. Working on two things at once is allowed and always was; the point is to catch the timer somebody forgot to stop yesterday before it quietly logs another eight hours. Pausing logs the time properly rather than discarding it.
The note you write when you stop a timer now also posts as a comment on the task, alongside the logged hours. What you did during a session is visible where the conversation is, instead of only on the hours ledger where nobody looks.
The "allow more than one running timer per person" switch in Settings is gone. It was never enforced, and the answer is simply yes — with the heads-up above doing the useful part of the job.
Starting a timer has always set the task to In progress, but My Tasks did not redraw — so the task sat under Next Up with a timer visibly running on it until you reloaded the page. It now moves across immediately, and the view follows it to the In Progress tab, which is where you are working.
04Tasks
Open a task — from the board or from a quick look — and there is a History section just above the comments. Every time the task was started, paused and finished, with the time banked on each session, alongside every status change, completion and reopen. Read-only, and collapsed by default so it never gets in the way of the conversation. It is built from records the platform was already keeping.
They used to be written identically — the only clue was a word the screen happened to send along with the hours. That made a task history a guess. Each session now records why it closed, so pausing and finishing read as what they are. Older sessions were sorted out too, so the history goes back rather than starting from today.
Status changes were logged without the person who made them — every one of the 214 on record was anonymous. They now carry the name, so the History reads as a record of who did what. Changes made before today stay blank; there is no way to recover who they were.
Work that builds itself. Set up an initiative once — with its tasks, checklists and files — and have it created on a schedule, for one client or all of them, with the dates and names filled in automatically.
01Automations
A new Automations section in the sidebar. An automation pairs a TRIGGER (when) with an ACTION (what). Today the trigger is time — once on a date, or repeating daily / weekly / monthly — and the action is to create an initiative, with its tasks, for the clients you choose. It is deliberately a small palette that will grow a trigger and an action at a time, rather than a sprawling visual builder nobody finishes configuring.
What an automation creates is authored as a template using the same editors as a real initiative: rename it, write the description, tick together a checklist, upload files, and add tasks with the usual add-task wizard. It is a real initiative under the hood — it simply has no client attached — which is why it behaves identically. It appears on no board, in no KPI, and in nobody’s task list.
Titles and descriptions can carry {{merge fields}} that fill themselves in when the automation runs. A "+ Merge field" button next to each field drops the token in where your cursor is, and shows a live example of what each one produces. The workhorse is {{date.month:-1m}} — a recap automation running on the 1st of July names itself "June Recap". Client name, the client’s owner, the day, the quarter and more are all available. A token that isn’t recognised is left visible rather than blanked, so a typo is obvious instead of leaving a mysterious gap.
A template can’t hold a fixed date — it runs many times — so due dates are set relative to the run: "5 days later", "end of that month", "the following Monday". The month-end rule is deliberate: a monthly job on the 31st lands on the 28th in February and is back on the 31st in March, rather than drifting earlier every cycle or spilling into the next month.
Rather than hard-coding a person, a task can go to "the client’s owner" — so one automation across ten clients assigns each client’s work to whoever owns that client — or to "the automation’s owner", which lets two automations share one template and still route to different people.
Preview resolves every merge field and date against each targeted client and shows exactly what would be created, writing nothing. Run now creates it for real. Automations start switched off, so nothing fires because a half-built one got saved.
An automation runs at an hour you choose, and the time is always shown in SGA (Central) time AND Philippine time side by side — because "6am" is the end of one working day and the start of the other, and the gap between the two shifts by an hour when Central changes for daylight saving.
Targeting several clients (or all of them) creates a SEPARATE initiative on each client’s own board, with its own tasks, dates and owner — not one shared item appearing in several places. Three clients means three initiatives, with the merge fields resolved differently in each.
Automations has its own section in the sidebar now, with a History view: every run, what it created, for which clients, and anything that didn’t go to plan. Expand a run for the per-client detail. The last few runs also show on the automation itself, so after pressing Run now you don’t have to go anywhere to find out whether it worked. Deleted automations stay in the filter — their runs still happened.
Automations, templates and template tasks all go to the Recycle Bin like everything else, rather than vanishing. An automation is deleted and restored as a whole — the automation, its template and the template’s tasks together — so what comes back actually works.
A job checks hourly, fires the automations whose time has come, and records it. Three independent guards stop anything being created twice: a run is claimed before any work begins, the claim is keyed to the day the run is FOR rather than the moment the job woke up, and every created initiative is stamped so a run interrupted halfway resumes without duplicating what it already made. If a check is missed, a later one the same day still picks it up rather than skipping the day. If whole days are missed, the default is to catch up once — you want June’s recap once, not five stale copies.
02Clients
Each client now has an owner — the person responsible for it — shown under the scorecard on the client page. Nothing recorded this before: there were task assignees, but nothing saying who owns the client. A sub-company with no owner of its own shows its parent’s. It is what lets an automation route work to the right person per client, and it is the groundwork for automatically raising a response task when a client emails.
The top of a client page now stays put as you move between its tabs — and the numbers up there are down to three, each one clickable.
01Client page
The client name, the scorecard, the capacity bar and the action row (View plan · Edit client · Edit Communications · New initiative) now appear on every client tab — Schedule, History, Deliverables, Report and Comms history — not just the board. Previously those pages dropped the lot, so moving between tabs changed everything above the content. Now only what sits below the action row changes.
The sub-pages no longer repeat their own name in a big heading (“Weekly Schedule”, “History”, “Deliverables”…) — the tab bar already says where you are. The monthly report keeps its month, because that’s information rather than a label.
Removed a duplicate divider line and the empty gap that sat under the tab bar, moved the capacity bar above the metrics (it’s the at-a-glance “are we over?” line), and dropped the board’s “This month” hours chip — the capacity bar already shows that figure. The small label above the client name now reads “Client”.
Clicking between a client’s tabs no longer reloads the top of the page. The client name, scorecard, capacity bar and action row now stay put — only the content below the tab bar changes, with a small spinner in that area while it loads. No more flash, and no more being thrown back to the top of the page. Two consequences worth knowing: the monthly report now lives at /{client}/report instead of /report/{client} (old links redirect themselves, so anything already shared keeps working), and for a parent company the header figures now always include its sub-companies — the board below still filters to parent-only.
The monthly plan pop-up could only reach last, this and next month, so an older plan was unreachable from the app. It now has a month picker beside the quick buttons — the app’s own picker, the same one used for dates but showing months instead of days: the arrows step the year, and nothing changes until you click a month. Pick any month of any year and it loads that month’s plan, or lets you attach one. The three quick buttons stay for the everyday case (and still show a green dot when a plan exists). Months outside those three are looked up on demand.
Communication already opened the list of threads awaiting a reply. Quality and Timing now do the same: Quality opens Out of Spec (what the client sent back this month, most recent first) and Timing opens Late Work (dated tasks that missed their due date, furthest behind first). Each row links straight into the task. Company-wide from the Full View scoreboard, or scoped to one client from the client page and the dashboard cards — so any number on the board can be checked item by item instead of taken on trust.
Each client card on the dashboard carried six figures (initiatives done, tasks done, since we messaged, since they messaged, on-time, open). It now carries the same trio as everywhere else — Comms, Quality, On-time — each clickable. One set of numbers, the same three, wherever you look. It also means two fewer database queries per client every time the dashboard loads.
Quality and Timing used to show a grey dash when there was nothing to measure yet — no work sent for approval, or nothing with a due date finished. That read as broken rather than good. They now open at 100% in green and only drop when something actually goes wrong, with the line underneath saying which case you’re in (“Nothing sent for approval yet” vs “2 sent back (out of spec)”). Applies everywhere the scores appear — the client header, the company scoreboard on Full View, the client rows on the dashboard, and your own month on My Tasks — which now all share one set of rules instead of four copies.
The client header now carries the same three measures the company scoreboard tracks — Communication, Quality and Timing — scoped to that client, and calculated exactly the way the dashboard calculates them. Communication is the threads awaiting our reply (click it to see them), Quality is the share of work sent this month the client did not send back out of spec, Timing is the dated work that met its due date. The old six-tile strip (initiatives done, tasks done, since they messaged, since we messaged…) is gone: past three numbers, people stop reading them. The two “since messaged” figures are a communications measure and will come back on the Communications page.
Before a Drive folder is set, the Drive tab was drawn in mixed case next to the uppercase tabs. It now matches whether or not a folder is configured.
A big pass over the everyday surfaces — the board, the task/initiative pop-ups, My Tasks, and the client tabs.
01Board & pop-ups
Completing a task — from the board checkbox, a pop-up, or the guided status flow — now stays complete after a refresh and moves into History. Before, it looked done but came back on reload. Reassigning a task now sticks the same way (and no longer shows up under both the old and new owner).
Adding a task, changing a date, completing something, or editing any field inside an initiative or task pop-up now updates right there. Previously the pop-up showed stale content until you closed and reopened it.
Click a task in an initiative pop-up and its full pop-up opens on top; dismiss it and you land back in the initiative where you were working.
The checkbox next to each task inside an initiative now marks it complete (or reopens it) on the spot — no need to open it first.
Description, Checklist, Files, Comments, Tasks, Dates and Plan & Review are now collapsible sections with a count. Empty ones tuck away showing “0”; ones with content stay open, and the collapsed header still shows the count. Add-a-comment and Upload-file stay reachable without expanding, and Dependencies (a task-only thing) no longer shows on initiatives.
The stage strip sits right under the initiative title; Comms · Share · Delete are a compact row top-right. The task pop-up drops the ID chip (the Share link carries it) and moves the Owner in with the other properties.
Deleting a task or initiative now uses an inline “type delete to confirm” instead of a browser dialog, then closes and drops it from the board. An initiative that still has tasks warns you to clear or move them first.
02Initiatives
A Dates section shows Start · First revisions · Due · Launch, all editable in one spot (the last two used to be read-only). Collapsed, its header shows the next date coming up and which one it is.
The initiative owner is now the same avatar dropdown as tasks — and you can change it, not just read it.
A quick “minor update” (no plan) can grow into real work — a “Convert to a full initiative” button now lets you promote it so you can attach a plan. The create wizard also drops the misleading “just one task” wording (a minor update can have several tasks).
03My Tasks & History
My Tasks splits your working queue into “In Progress” (anything you’ve started — hours logged, a timer running or paused, or an In-progress status) and “Next Up” (not started yet). A paused task stays in In Progress until its status advances, so what you’re mid-way through is always separate from what hasn’t begun.
The work control on a task is now a three-way choice: Work in Claude Code · Work outside Claude Code · Need input to move forward. “Work outside Claude Code” is available on every task now (log time even when it isn’t done in Claude Code), and the start box only appears once you pick a mode. “Need input to move forward” raises a strategic-input blocker before you start rather than starting the work.
Completed tasks on the History page are now clickable — open a quick look to see what the task actually was.
04Client view
The client tab that opens your published deliverables and brand assets on the file host is renamed Assets, to tell it apart from working source files.
A new Drive tab links to the client’s Google Drive folder of working source files (Illustrator, Photoshop, and the like). Set the folder in Edit client; until it’s set, clicking the tab says it hasn’t been set up yet.
The Communication tab now opens the client’s comms board in a new browser tab (like Assets and Drive), so you don’t lose your place in the client view.
View plan · Edit client · Edit Communications · New initiative now appear on every client tab (Schedule, History, Deliverables, Report, Comms history), not just the board — so the row you act from doesn’t disappear when you move around.
For new work only — existing review links keep working exactly as before.
01Reviews
The client-facing review page (annotate a design, leave comments, approve) now runs inside Status at status.sga.team/review/… instead of the separate review subdomain. New reviews get an unguessable link that stays valid even if the initiative is renamed. Existing review links are untouched and still open the way they always have.
A reviewer can now attach a file to a comment or a requested item directly in the review — it’s stored in our own file storage, the same way task attachments are. Previously this fell back to “paste a link”.
Everything said in a review — client feedback, approvals, answered requests, our own replies and internal team notes — now posts onto that initiative’s timeline in the Communication hub, starting a thread if there isn’t one. The thread becomes the complete record of communication about the work, so it can be used as context to improve it. Client messages flag the initiative as needing a response; internal notes are marked Internal and stay clearly ours.
The Reviews list now opens every review in the in-Status page. (Links already sent to clients still point at the old review address and keep working — that tool stays up to serve them.)
Open a review while you’re signed in to Status and it recognises you: no more typing your name and email every time. That prompt is only for clients now, so we know who left the feedback. It also means your feedback can’t be posted under whoever last used that browser.
Internal, team-only deliverables and internal comments (and the “download feedback for Claude” export) used to be hidden based on an email address you simply typed in — so anyone who claimed an SGA address could see them. They now need a real Status login, which clients don’t have and can’t fake. Note: if you open a review without being signed in to Status, you’ll see it the way a client does until you sign in.
The monthly client report was listing deliverables we’d marked internal (team-only), because it read them from the old review markup, which didn’t carry the internal flag. It now reads them from the platform itself, so internal items are excluded — and reviews created on the platform, which the report previously showed nothing for, now list their deliverables correctly. Edits to a deliverable list also reach the report immediately instead of going stale.
Adding an annotation to a comment that was already posted used to silently do nothing on platform-native reviews. It now saves.
Each initiative on the monthly client report shows its review activity again — revisions, approvals and review comments. These had been switched off ever since we left Asana (they used to be counted from Asana comments, and nothing rewired them). Revisions counts versions after the first, so a deliverable at v4 counts as 3. Internal team-only deliverables and internal notes are left out, so the numbers reflect what the client actually saw.
Reviews are driven entirely by the platform now — the legacy review markup that used to live inside an initiative’s notes is gone from the app and the database, and nothing in the review reads Asana any more.
01Repo API
When you start a Claude Code session on a task, the API now returns the task’s checklist, its file attachments, and its comments — not just the description. Text files (transcripts, notes) come back with their content inline, so the session reads them in the same call.
Each attachment now has a link the session can fetch with its own key, so it can read a call transcript or brief without opening a browser or touching Asana.
Each of a task’s dependencies now includes the assignee’s name and email, so a session knows who owns the thing it’s waiting on.
The task now carries its own assignee (name + email) and the assignable team roster, so a session working from a task alone knows who it’s for and who it could be reassigned to — no extra call.
The initiative comms thread is now found by the initiative’s own id, so initiatives created on the platform (with no Asana link) return their thread too.
01Reviews
When a deliverable was submitted (from Claude Code or the upload flow), the review link was recorded on the deliverable but not on the initiative — so the initiative still said "Create review" instead of showing the existing review. Submitting now points the initiative at its review link, so it shows "Open in Review Tool" and "Edit review deliverables" straight away.
01Plans
Add ?internal=1 to a plan’s URL to see exactly what Status will import from it — every owner, date, status, dependency, description and checklist. It already worked on plans Status hosts; now the Import page gives you a drop-in snippet to paste into a real client plan (hosted anywhere) so the same preview works there too. It only appears with the flag and is never shown to clients.
The downloadable task and monthly markup guides now document ?internal=1 and include the snippet, so a Claude Code session writing a plan sets it up automatically.
01Recycle Bin
The Recycle Bin has a "Select multiple" mode: tick the items (or Select all) and Restore or Delete permanently them in one go — handy for clearing the bin or bringing back several things you deleted by accident.
01Plans
When you import a monthly plan, each initiative it creates now gets its own plan automatically — a page generated live from the initiative and its tasks, attached as the initiative’s plan. So it has "View plan" and "Import" right away, and it’s a starting point you open in Claude Code to write the full plan (which then replaces it). It’s v1 — the bare minimum — and we’ll refine the process over time.
01Import
The plan strip (View plan and Import tasks from plan) was tied to an Asana id, so it never showed on an initiative created in the platform after the Asana exit — you could set a plan but not import it. It now appears whenever a plan is attached, and addresses the initiative by our own id.
01Import
Instead of happening quietly in the background, "Import tasks from plan" now opens a pop-up: a spinner while it reads the plan and creates the tasks, then a summary of exactly what happened — the tasks it created, anything marked "not imported" (like a QA task the system handles itself), and any errors. Close it and the card refreshes with the new tasks.
01Import
When you import from a plan, each task it creates (and the initiative itself) carries a "Full initiative plan" link in its description. For a monthly import, that link points at the initiative's OWN plan (its DB plan) — not the whole monthly plan — so a task only shows what's relevant to it. Open it in Claude Code and the right plan is one click away.
01Initiatives
Initiatives now have a client-facing "Submit for first revisions" date — the first-draft milestone, when the client starts seeing work and revisions begin — alongside start and target launch. It is asked for in the create wizard and shown on the initiative card. A monthly plan can carry it (data-sga-initiative-first-revision, plus -start and -launch), and importing a monthly plan reconciles the initiative's dates to match the plan, so ours and the client's always agree.
01Plans
A "Write the plan" task (created with a new initiative) links to the initiative-plan markup guide, and a task whose work happens in a Plan links to the monthly-plan markup guide. So when you open the task in Claude Code, it can read exactly how to encode the plan straight from the link — and because the guide is generated from the live contract, the link always serves the latest version.
01Import
Add data-sga-task-skip-import to a plan task and it shows on the plan (the client sees it, and we still do it) but Status will not create it — useful for work the system handles itself, like quality-assurance testing, which Status auto-creates on submit so importing it would duplicate. The internal view flags these clearly as "not imported" with the reason. The sample plans now show a real example (and use deliverable-style tasks + the SGA look).
01Import
Each Import tab now has a "View a sample plan" link next to the download — a real, ready-to-import example built for SGA (our own company): a sample initiative plan and a sample monthly plan. Open one to see how the markup reads, or paste its link straight into an initiative/month to test the import.
Add ?internal=1 to any plan URL (or use the "internal view" link on the Import page) to reveal every field the importer will read: who each task/initiative is assigned to, its dates, where it is worked, its status, dependencies, description, and checklist — including the fields that are hidden in the client view. Empty fields show the default that will be applied, so you can review a plan and confirm nothing is missing before importing.
01Plans
The "View plan" popup (on the client page, dashboard, and clients cards) now has an "Import initiatives" button whenever a plan exists for the selected month. It reads the plan’s data-sga-initiative markup and creates each initiative with its nested tasks in one go. Like importing tasks from an initiative plan, it’s safe to re-run — if the plan later gains an initiative or a task, only the new ones are added; the originals aren’t duplicated.
01Import
The old "paste a plan and push it to Asana" import is retired. The Import page is now the reference for the data-sga-* markup, in two tabs: Initiatives (how an initiative plan encodes its tasks) and Monthly plans (how a monthly plan encodes its initiatives, each nesting tasks). Each tab explains the attributes, allowed values, rules, and an example, and has its own "Download the Markdown guide" button to keep to hand or hand to a Claude Code session.
Plan markup identifies the owner by email instead of name, because emails are unique — so the importer always assigns the right person even when two people share a first name.
01Board and pop-ups
Deleting a task or an initiative from inside its pop-up used to leave the pop-up open, still showing the item you just deleted. Now the pop-up closes and the board refreshes as soon as the delete lands.
01Everywhere
The app was deciding what "today" is on UTC, so after about 7pm Central everything rolled over to the next day. A task due the 15th would show as overdue at 8:21pm on the 15th, and "due today" / "this month" could be a day or a month off. Every date the app compares (overdue, due-today, completed-on, the board's this-month figures and hours) is now anchored to Central (SGA) time, so it matches your clock.
01Time tracking
When you paused a task timer and started it again, the on-screen clock reset to 00:00:00 (your logged hours were always correct, but the display lost your place). Now the clock resumes from the time already banked on that task and keeps counting up.
01Everywhere
The app no longer writes to or reads from an internal Asana workspace. Creating and editing initiatives, tasks, comments, checklists, hours, and status all happen in the platform directly. Your per-client Asana communication channels (the ones that pull a client's messages in and let you reply) are untouched.
The migration-mode banner at the top of the page is gone, because the migration is finished.
01Tasks
Moving a task forward in the pop-up (e.g. past Ready to send) used to update quietly without changing anything on screen. It now refreshes in place, showing the next set of forward actions right away.
A task "Awaiting final approval" now offers "Client asked for revisions" and "Client says something is broken" alongside approve / out-of-spec, so a client bounce goes back into the working loop for whoever's on it.
02Everywhere
Every "Open/View in Asana" link across the app has been removed — the platform stands on its own now.
The activity log shows times in SGA time (not a mixed zone), and task entries now open the task inside the app (in a new tab) instead of jumping to Asana.
03Settings
A new "Communications maintenance" section shows how many ignored threads (spam, newsletters, notifications) are stored and lets an admin delete them in one click. The ignore rules stay, so those senders remain ignored.
01Dashboard
The dashboard was hiding any company that had zero active initiatives (e.g. PeakSpan). Every active company now shows its card — with its comms, capacity and KPIs — and the quiet ones sort to the bottom.
02Communication
Logging a conversation now has a "When did this happen?" date (defaults to today, editable to backdate), so a call or text you log after the fact lands in the timeline on the day it actually happened.
01Communication
When mail comes from an address that is not linked to any company, its conversations never reach that company's card. The Comms Hub now shows a hard-to-miss banner at the top listing those senders. For each one you choose "just this address" or "everyone at the domain", then either link it to a company (writes a lasting rule and matches the conversations that sender already has) or add it to the ignore list (archives its mail and skips it in future). No more per-thread chore.
The unlinked-senders banner now looks at every external address that has emailed us with no company link — not just brand-new unmatched threads — so contacts sitting in older or mis-flagged threads (e.g. a client whose mail was tagged internal) show up to be linked. The dashboard "Recent" card was fixed the same way, so those messages appear there too.
01Initiatives
Creating an initiative used to go out to Asana and wait for it to come back before the platform had anything. Now the initiative and its first task ("Write the plan") are created right here in the platform, then mirrored to Asana as a second step. If Asana is slow or rejects the write, your initiative and task still exist here, and the mirror catches up later. This is the first real step of the platform standing on its own.
Because the plan task no longer depends on Asana succeeding, it is always created with the initiative, instead of silently going missing when the Asana call failed.
A new initiative was landing with no start or due date. Asana refuses a start date with no due date, so when you did not set a due date the whole date save was dropped. It now defaults the due to the start, so the dates always stick (change the due later in Refine).
A hard launch date set in the wizard was saved but never shown. It now appears as a Launch chip in the initiative meta row.
Opening a new initiative that had not been mirrored to Asana yet showed a pop-up that stopped after the stage strip, with no tasks. The initiative pop-up was built assuming every initiative lived in Asana. It now shows the tasks and the description for platform-first initiatives too, and their name is clickable on the dashboard.
The mirror now saves the Asana id the moment the Asana copy is created, before setting its dates, so a date hiccup can no longer leave the Asana copy unlinked. It also computes "today" in our own timezone (not UTC) and never sends Asana a due date before the start, so a late-evening create no longer trips over the date.
Every real initiative card now has a "Set initiative plan" button, before the review-tool button. It opens a picker where you either choose one of the initiative's deliverables or paste a link to the plan (the client-facing cover page), instead of only getting it automatically when a deliverable is submitted under the plan slug. Once set, the plan strip appears (View plan / Import tasks from plan), and you can change or remove it.
02Tasks
When you stop the timer and submit, the "how do you want to submit this?" step now offers "Mark complete — no QA needed" alongside "Send to QA review", so work that genuinely does not need a check can be closed out directly.
A QA task (its own "QA: …" task) used to only offer "Send to QA review", which spawned yet another QA task off it, forever. Finishing a QA task now simply marks it complete.
03Dashboard
A client with nothing awaiting a reply used to drop its "Recent communication" card entirely, which looked like missing data. It now shows a green "Open · 0" (red with a count when something is waiting), so all-clear is a positive signal instead of a blank.
The "Recent" tab was a 2-week window collapsed to one row per thread, scoped to just the parent company — so it missed sub-company conversations (a company could show "no activity" when its sub had plenty), grouped everything by subject, and never showed our replies. It is now the last 15 actual messages, both directions (sent and received), across the client and all its sub-companies, each row showing who wrote to whom and the date it was sent.
04App
A new Backlog page (clipboard icon in the sidebar, next to Changelog) lists everything planned, in flight, and recently shipped, grouped by area with a status on each. It replaces having to ask for the list — say "add a backlog thing" and it shows up here.
05Plans
Each client can now have a client-facing plan per month. A "View plan" control appears beside the company name on the Dashboard, next to "Refresh from Asana" on the client page, and on the clients cards (there, only when a plan exists). It opens a popup where you pick the month, open the plan, and add or update it — either paste a link, or choose a deliverable through Active/Completed → Initiative → Deliverable dropdowns.
A sub-company shares its parent company's plan — the parent holds the client contact and the shared capacity, and the plan covers the children. So "View plan" on a sub-company shows the parent's plan.
To avoid clashing with the new monthly plan, the client "Plan" tab is renamed "Schedule" (now at /schedule), the page is titled "Weekly Schedule", and the old "Uploaded plans" list is replaced by the attach-a-plan control.
01Initiatives
Creating an initiative is now a short guided wizard, one decision at a time: name, owner, Active or Future, a start date for future ones, a due date for sending it to the client plus an optional hard launch date, and whether it needs a plan. A real project auto-creates its first task, "Write the plan," for the owner, already loaded with a checklist of the steps for writing a plan. A minor update skips the plan and creates a single task instead. The manual form is off for now.
Each initiative now shows who owns it, right in the meta row.
When an initiative grows a second, separate deliverable, split it. The "Split initiative" button (by the review buttons) opens the New Initiative wizard with a first step to tick which tasks move over. They leave the old initiative and join the new one, keeping their owner, dates, and history, so comms, the review link, and KPIs stay clean, one outcome per initiative.
The manual initiative Status dropdown is gone. An initiative now shows where it is from its own tasks (the stage strip already did this), so there is no second status to keep in sync. The only thing you set on an initiative is what it is Waiting on: awaiting spec approval (the plan), awaiting final approval (the finished project), waiting on client assets, waiting on a dependency, needs strategic input, or on hold. Everything else is just forward progress, and that comes from the work.
02Tasks
Adding a task to an initiative is now a guided wizard too: what needs doing (one thing, under four hours), who owns it, when they turn it in (framed as the date before QA, not the client date), where the work happens, a description (the most important field), and an optional checklist. The manual form is off for now.
New tasks no longer ask for an hours estimate. Hours are tracked from real work sessions, so the estimate field was just noise.
03Plans
Once an initiative has a plan attached, its card shows a plan strip: View plan, and Import tasks from plan. The plan (written in Claude Code) carries the task breakdown as hidden markup, who owns each task, where it is worked, when it is due, its description, checklist and dependencies, none of which the client sees. Import reads that markup and creates the tasks in one go. Re-importing after a plan update only adds the new ones.
01Presence
If you’ve got a work timer going, you won’t get the “still working?” prompt or be set to Away — the running clock already proves you’re active.
02My Tasks
Those two tabs now appear only for people who can move work forward past QA (send / skip-approval / complete). Everyone still sees Working, In QA, and Blocked — including their own work that’s in QA or stuck.
03Dashboard
An initiative that’s itself waiting on the client now drops into the card’s “Waiting on Client” group instead of being stranded in the active list with nothing under it.
04Tasks
The task pop-up now has a pencil next to the name — click it to rename right there (from the board, My Tasks, anywhere). And the rename pencil in an initiative’s task list is always visible now, not hidden until you hover.
01Tasks
A task now shows only the moves that make sense from where it is — Submit for QA, pass to Ready to send or send it back (needs revisions / functionality fix / out of spec), mark sent, complete. Picking a status by hand is gone for everyday use; an override lives behind a “…” for admins. The status section stays hidden until a task is started. Submitting for QA opens a pre-filled QA task (Manual, due tomorrow) — you just pick who does it.
A send-back prompts for a note on what needs fixing and an optional new due date. The reason is recorded for the KPI: out of spec counts against on-time, while functionality fixes and client revisions don’t.
Starting the timer moves a task to In progress; finishing sends it to QA. Code tasks get a “Start in Claude Code” button that copies the /start command and starts the task in one click. New: a Pause button on the timer for when something comes up — the button then reads “Resume” to pick it back up. Re-submitting after a fix goes to QA revised — a re-check.
Marking a task complete through the guided flow now actually closes it out, so it no longer lingers in My Tasks after a refresh.
When work comes back — Out of spec, Revisions, or Functionality fix — the task now shows a badge on My Tasks and in the pop-up saying which, with a nudge to open View for the note. Out of spec reads red (it counts against on-time); the others read amber (no penalty).
“Work in Claude Code” now runs the same timer as working outside it: “Start in Claude Code” copies the /start command and starts the clock in one go, a small Copy-command button stays handy while it runs, and Pause / Finish (with the deposit step) work the same — so a code session can always be stopped and logged.
The Claude Code timer now shows on every kind of task — working repo, company, report, plan, production and manual — so any task can be started, paused and logged the same way. Manual/Production still get the extra “work outside Claude Code” option.
On My Tasks, switching a task’s work environment (e.g. to Manual) now refreshes the card so the right controls appear immediately — you no longer have to reload the page to get the work-outside-Claude timer option.
Completing the follow-up for a “need input” or “waiting on assets” block now actually clears the block automatically — the link between the two was pointing the wrong way, so it wasn’t being detected. (Applies to blocks created from now on; older ones can still be cleared with the Unblock button.)
Sending a task to QA from the timer now sets the QA task’s due date to tomorrow, matching the guided Submit-for-QA flow (it previously had no due date).
When you create a QA task or a “need input / blocked” follow-up and assign it to someone, a “Top priority” checkbox sets it due today and drops it to the top of that person’s list — so an urgent hand-off is genuinely first in their queue instead of landing at the bottom.
The work-environment (“Where”) picker used to open behind a pop-up in some places — e.g. the “Need input to move forward” task setup — so you couldn’t change it. It now opens above the pop-up. That setup task also defaults to Manual now.
A new control next to the work toggle lets you flag that you can’t move until you get information or a decision. It creates the strategic-input task (assigned to whoever owns the answer) and marks yours blocked. “Needs strategic input” is no longer buried in the submit step — it belongs before the work, not after.
A QA task spun up from the timer’s submit step now defaults to Manual (a hands-on test job) instead of a working-repo build — for both first QA and re-QA.
Your tasks now sort by due date first — everything due today at the top — with priority breaking ties within each day. Undated tasks sit at the bottom.
My Tasks now has tabs across the top — Working, In QA, Ready to send, Awaiting approval, and Blocked — each showing a count, so you can focus on one bucket at a time in a single clean list. Awaiting approval is delivered work waiting on the client’s final sign-off (yours to chase to Completed); Blocked gathers anything you’re stuck waiting on (client assets, a dependency, on hold, strategic input, spec approval). Every card also shows a stage tag at a glance. The Status API key panel is collapsible to keep the focus on the work.
The “Start in Claude Code” command + timer now only appears while a task is yours to work (the Working tab). Once it’s in QA, ready to send, sent, or blocked, the card leads with the advance action and View/comment instead — no start command where you’re not starting anything.
Dropped the big page header — My Tasks now opens straight into “Your month” (your KPIs) then “Your tasks”. Your Status API key moved into the side rail, tucked right above your inbox.
Each card has a small “Description” toggle — expand it to read the details right there, without opening the full pop-up.
The Team page no longer shows the edit-info + mailbox-connection panel at the top — it was distracting. Instead there’s an “Edit member →” button that takes you to Settings, where editing a person’s email/role/notes and connecting or disconnecting their Google mailbox now all live together.
Clicking a teammate on the Team page now uses the same stage tabs — Working, In QA, Ready to send, Awaiting approval, Blocked — instead of the old status filter chips. Their work is grouped by day (Today, Tomorrow, then dated) rather than by week, and you still drag to set priority within each day.
When a task is blocked on other work — a dependency, waiting on client assets, or needing strategic input — finishing that work now clears the block automatically and the task leaves the Blocked tab. You can still unblock by hand: a one-click Unblock button on the card, or the Blocked dropdown in the pop-up. (Tasks put “on hold” still wake on their start date, as before.)
New per-member capabilities in Settings → Permissions: who can QA / send back, mark sent, complete without client approval, and override status.
02Dashboard
The Dashboard quality figure now measures external out-of-spec (a client bounced a delivered item — the transition from Awaiting final approval to Out of Spec) over what was sent this month; internal QA catches don’t count against it. It reads “—” until work flows through send/approve.
01Settings
Admins can set the idle-prompt, auto-away, auto-logout, and timer auto-cap minutes — plus whether to allow more than one running timer per person — in Settings → Time & presence. A person’s own idle overrides still win.
02Presence
A background check now records a forced-away and clocks people off once they’ve been idle past the thresholds, even if their browser was closed — so presence and hours stay honest without a tab left open.
03Tasks
The work timer for Manual/Production tasks now lives in the task pop-up, not just My Tasks — and a running timer stops itself at the auto-cap so a forgotten one can’t run forever.
01Presence
A status control at the bottom of the sidebar — Available, On break, or Done for the day. Opening the app clocks you in as Available; choosing On break or Done sets your status and logs you out, so you always leave a clean, signed-out machine (there’s no separate log-out button anymore). Your status shows to the whole team.
The sidebar shows how many people are on now, and expands to the list with a status icon by each name.
After about 10 minutes with no activity you’ll get a “still working?” nudge with a sound and a 3-minute grace — enough for a quick break. If there’s no response it sets you to Away and records it, so a pattern of auto-aways is visible (versus a break you set yourself).
Becoming available, going on break, done for the day, and forced-aways now appear in your activity feed (a forced-away is flagged as auto, so it stands out from a break you set yourself).
01My Tasks
Manual and Production tasks now let you choose: “Work in Claude Code” shows the /start command and cockpit steps as before, or “Work outside Claude Code” gives you a start/stop timer for logging the time you spend in your own tool. Manual tasks open on the timer side, Production on the Claude Code side.
Start the timer when you begin, stop when you’re done — the time is logged to the task automatically, no typing a number. The clock runs on the server, so closing the tab or reloading doesn’t stop it: reopen and it’s still going.
When you stop, a short wizard asks what you did (required) and how to submit it — send to QA review, mark complete, or flag for strategic input — and for QA it creates the QA task for whoever’s reviewing, the same as everywhere else.
01Capacity
The “Capacity · this month” bar — on a client page and on the Dashboard — is now clickable (it carries a “view →” tag so it’s obvious). It opens every task the client completed this month, most recent first, and flags any that have no hours logged so you can catch and fix them — add or subtract hours on any of them with a reason, the same control as the task pop-up.
02Dashboard
On the Dashboard’s Company scan, tasks that are awaiting spec/final approval or waiting on client assets are pulled out of their initiatives into a single “Waiting on Client” group at the bottom of each client card — so the active lists read as just what we’re working on, without a tag on every row.
03Communication
Every Open Requests row now has an “Add to ignore list” action (for members who manage the ignore list), next to Mark replied / No reply needed. It opens a pop-up pre-filled with that sender’s email — confirm and future mail from them skips the queue and this thread is archived. Switch the scope to Domain to mute everyone at that domain.
04Communication
On the Dashboard, the “Open” figure on a client card is now a link, and the expanded Recent Communication panel has a “View open requests →” link — both open the Open Requests queue filtered to that client.
05Communication
Some open requests showed “(no subject)” — threads with no inbound message (e.g. a calendar accept) had nothing for the list to read a subject from, even though the thread itself has one. The list now falls back to the thread topic, the same title the Unmatched/Communications view shows.
06Communication
A member granted the “unmatched” capability was still having every unmatched email hidden — unmatched threads have no client attached, and the client-visibility filter was dropping them. Unmatched threads now show on Communications and Open Requests for anyone with the capability, not just admins.
07Navigation
The Dashboard moved from /meeting to /dashboard to match its name. Update any old bookmark — the /meeting link no longer resolves.
08Tasks
Moving a task to another initiative (the pencil by the initiative name) is now a two-step pick — first choose Active or Future, then the initiative within that group — so you always decide whether the task is going into live or future work. Completed initiatives are no longer offered as a destination.
01Initiatives
On an initiative, work items now collapse to a single line — completed and on-track tasks read cleanly; anything needing attention (no owner, no dates, overdue) shows red flags + a red outline while collapsed. Click a task to expand the full editor, fix it, then collapse again. Nothing removed — every control is there on expand.
02Initiatives
The review links now sit together under the deliverables: “Open in Review Tool” (the published review) plus a single “Create review” or “Edit review deliverables” button that jumps straight to that initiative’s review section. The stray review link and the redundant “Open initiative” link are gone.
03Initiatives
These now sit on a single row right under the title. Start and Due are inline date fields that save the moment you change them — the old “Edit details” pop-up is gone. Hover the title and click the pencil to rename an initiative in place.
04Initiatives
The initiative pop-up now shows the editable description, checklist, files and comments inline at the bottom — so it fully stands in for the initiative page. The old “Open initiative” link is gone; you no longer have to leave the pop-up to read or reply.
05Navigation
Clicking one of these in the sidebar now opens its main page and switches the sidebar to that section’s list in a single click — no more clicking twice to get to the full page.
06Dashboard
A thread flagged for attention added a timestampless internal note that was being treated as the “latest message” — so the card row went blank (no subject, no sender). Recent Communication now picks the latest real email, and falls back to the thread topic if an email genuinely has no subject.
07Tasks
The task quick look (My Tasks → View / Comment) now grows and scrolls with the page like the other pop-ups, instead of squeezing everything into a little inner scrollbar.
08Board
Reordering cards on the board — and rows on the team priority list — now shows a gold drop line at the exact spot the card will land as you drag (top or bottom half of a card), instead of guessing. It commits when you let go. Top = highest priority.
09Board
The board now has a “Waiting on Client” column between Active Tasks and Future Initiatives. Tasks (and whole initiatives) awaiting spec/final approval or waiting on client assets move there automatically, so Active reads as just what we’re working on. Initiative cards across the whole board now carry a blue left border so they’re easy to tell apart from tasks; a waiting initiative’s tasks are tucked inside it (click to view). It’s a view — nothing is written to Asana; change the status to move it in or out.
A future initiative’s tasks live inside the initiative now (open it to see them), and deferred tasks no longer clutter the board. Future Initiatives moved to the far right.
10Sharing
Task and initiative pop-ups now have a 🔗 Share button that copies a link. Open it and it takes you to the client page with that pop-up already open — so you can reference a specific task or initiative in an email, text, or message.
11Tasks
The task pop-up now has a “Send to QA →” action that sets it to QA review and prompts who’ll check it, creating the QA task — the same flow as before, one click. Marking complete is gated by a new permission.
A per-member toggle in Settings. If a member can’t mark complete, the complete checkbox is disabled and they can only send a task to QA — so finished work is verified before it’s closed. Admins can always complete.
12Tasks
Ticking a task complete in its pop-up now marks it done, closes the pop-up, and still shows the little confirmation — no more closing it yourself.
A task’s dependencies now open in a quick look right in Status instead of jumping out to Asana.
13Tasks
Open a task and click the pencil next to the initiative name (top, by the breadcrumb) to move it to a different initiative for that client. Handy for cleanup when a task is filed under the wrong initiative — it reparents in Asana and updates Status together.
14KPIs
Moving a task’s due date later now prompts for why: the client added scope, we over-allocated capacity, or the owner couldn’t finish in time. The first two carry no penalty; “couldn’t finish” forfeits that task’s on-time credit — so an extension can no longer quietly turn a late task into an on-time one. The change + reason are logged.
01Initiatives
An initiative now has a Blocked control like a task (in Edit details). Putting it On hold creates a single “check back” task for the whole initiative — not one per task — which wakes into Active on its date.
When an initiative is on hold, its tasks show a “⏸ Initiative on hold” tag and read as parked (derived from the initiative — no need to mark each task, and new tasks inherit it). An on-hold initiative also stays put in Future instead of auto-waking.
01Scheduling
A task or initiative sitting in Future automatically shows in Active once its start date arrives — no dragging needed. Set a future start date to schedule work ahead. On hold is the exception: an on-hold task stays parked in Future, and its separate “check back” task is what wakes up instead.
01Clients
Edit client now has its own Git repo URL and Live site URL (previously these got squeezed into the other link fields). The live site shows as a “Live site ↗” link on the client page.
01Editing
Editing a task in a popup (the board or the Dashboard) no longer reloads the whole page after every change. Edits save instantly with the “Saved” toast, and the page quietly catches up once — when you close the popup — instead of interrupting you mid-edit.
02KPIs
The personal KPI that counts work sent back is now labelled “Out of Spec” — so a 0 reads as good (nothing out of spec) instead of looking like you did nothing.
The Meeting View is now the Dashboard — a read-only, at-a-glance read-out of the whole business, with a Company tab and a Team tab. Built for the daily meeting; edit from a task or the client page.
01Dashboard
The company scoreboard, then a card per client: its live KPIs, a capacity bar, and every active initiative with status + what’s overdue. Click an initiative or task to open it; you can set status/blocked right there.
A team-wide scoreboard, then a card per person — their month’s numbers, open tasks, and a “Recent activity · 48h” feed.
Each client card has a bar for its threads — Open (awaiting our reply, shown in red) and Recent · 2 weeks (replied / no-reply), each linking to the thread.
Company-wide totals under the scoreboard — everything overdue and everything blocked — each expands to the list. Only shows when there’s something to see.
Moved up the sidebar, above Clients.
Clicking an initiative on the Dashboard now opens the full initiative card — stage strip, work items, edit details — the same pop-up as the board, instead of the generic task quick-look.
Blocking a task now spawns the work that clears it, so nothing sits blocked without a next step — and QA is always its own task.
01Tasks
Setting a Blocked value opens a full task setup — Waiting on client assets / Needs strategic input / On hold each create a proper task (all fields, linked back as a dependency). The task is marked blocked only once you finish; cancel = not blocked.
Already linked to something → just mark blocked. If not: does the task it waits on exist? Pick it (initiative → task) or create it — either way this task then waits on it.
Moving a task to QA review / QA revised prompts you to create the QA task and assign it (defaults to Corrine). Each QA round is its own task.
The Add-a-task form now has an optional “Follow-up of” — mark a new task as a follow-up of an existing one, linking it as a dependency.
Board cards now show a yellow Blocked tag (with the reason) and a red Overdue tag alongside the status.
A blocked task or initiative now shows its blocker (e.g. “⚠ Needs strategic input”) right on the Dashboard rows — not only on the board or inside the quick-look.
The blocked (yellow) and overdue (red) tags now show on My Tasks and the Team list too — so wherever a task or initiative appears, you can see it’s blocked or past due at a glance.
01Creating work
The New-initiative and Add-a-task pop-ups are now two-column — the form on the left, the definition + the rules (task under four hours, QA is its own task, etc.) on the right, right where you decide.
02Navigation
Clicking Clients / Team / Communication swaps the nav for that section’s list with a ‹ Back — the main rail stays short instead of a giant expanding client list. Opening a client auto-opens the Clients list.
Removed from the menu — create/edit now happens from the client view. (The page still exists if we need it back.)
03Clients
The client “Edit communication” panel now groups linked senders into Domain names (catch-all) and Individual email addresses (an outsourcer / personal address), plus the Asana connection.
A new read-only page built for the daily read-out — the whole book at a glance, with a Company tab and a Team tab. Nothing is editable here; it’s purely for running the meeting.
01Meeting View
The company scoreboard up top, then a card per client showing its live KPIs, a capacity bar, and every active initiative with its status and what’s overdue. Click an initiative or task to open its quick look; click the client name for the full page.
A team-wide scoreboard, then a card per person with their month’s KPIs and their open tasks. Click a name to jump to their full to-do list — everyone shows, even with a clear plate.
QA is now its own task, never a hand-back. When work moves to QA (or needs strategic input), you’re prompted to create a follow-up task and assign it — so the original stays with the person who did it, and they keep the credit for it.
01Tasks
Moving a task to QA review, QA revised, or Needs strategic input pops up a prompt to create a separate task for that work and assign it to whoever’s doing it (defaults to Corrine for QA, but you can pick anyone). The original is linked as a dependency, and each QA round gets its own task.
Reassigning now clearly states it’s a permanent handoff of the task and its credit — only for when someone else must redo the work because it wasn’t done right. QA and other handoffs are pointed to a follow-up task instead.
Live monthly KPIs across the app, so the numbers — not opinions — drive the conversation. They reset each month.
01My Tasks & Team
My Tasks and each Team member now show a month scorecard: sent back (out of spec), on-time delivery, and tasks completed with hours logged.
02Clients
Each client page now shows completed work, comms recency (since we / they last messaged), on-time delivery this month, and open requests.
Set a client’s monthly capacity (hours) in Edit client; a bar shows this month’s logged hours against it — green, amber as it fills, red over budget.
A new Open Requests page lists the actual client messages awaiting a reply, with “mark replied” / “no reply needed” actions — the drill-down behind the Communication number.
A cleaner way to say where a task is at: one pipeline of statuses, plus a separate “Blocked” flag for what you’re waiting on.
01Statuses
The Status dropdown now groups by stage — Strategy → Approve → Production → Refine → Deliver — with a plain-English definition on hover for every option.
Two QA statuses: the first-pass check, and the re-check after a fix — so a first QA reads differently from a repeat.
Whether you’re waiting on the client, a dependency, strategic input, or it’s on hold is now its own field, separate from the pipeline status — so being blocked no longer hides where the work actually is.
On phones the navigation is now a standard hamburger menu that slides out as a drawer — with the full menu and submenus — instead of the cramped scrolling link row. Plus a new brand app icon.
01Navigation
Tap the ☰ in the top bar to reveal the full navigation as a slide-out drawer — the same links and expandable sections as the desktop sidebar. It closes when you pick a destination, tap outside, or press Escape. Replaces the horizontally-scrolling link strip.
02Look & feel
The browser-tab icon is now the SGA mark itself — navy on light tabs, and gold on dark ones so it stays visible either way.
You can now @-mention a teammate in any comment — start typing “@”, pick them from the list, and it lands in their My Tasks inbox. This is the piece that lets you deliberately reach someone, even on a task they don’t own.
01Comments
In a comment, type “@” and a list of teammates appears, filtering as you type; pick one to tag them. Tagged people get a “mentioned you” item in their inbox — so you can direct something at a specific person regardless of who owns the task.
My Tasks is now two columns: your tasks, and an inbox that surfaces internal communication directed at you so you don’t miss a response.
01My Tasks
My Tasks now shows your tasks on one side and an inbox on the other. The inbox pulls together internal communication meant for you: new comments on tasks you own, new comments on threads you’re part of (someone responding after you), and tasks newly assigned to you. Each item opens the task so you can read and reply.
It works like a notifications list: once you’ve handled an item, dismiss it (or “Clear all”) and it won’t come back. The count shows how many are waiting.
The “since we/they messaged” tiles now roll up to the parent company (across all its sub-companies), because the relationship is with the parent — a sub page shows the same figure.
01Client metrics
The “Since we messaged / Since they messaged” tiles were counting only a single client’s threads, so a sub-company page showed a misleading partial figure. They now measure the whole client relationship — the parent plus every sub-company — so the number is accurate and identical across the parent and its subs.
A sub-company page showed an “Unknown client” error next to Refresh from Asana. Refreshing a sub now syncs its parent’s Asana project (where the sub’s work lives).
01Sync
Sub-companies have no Asana project of their own — their work lives in the parent’s project — so a refresh (manual or the automatic one on a stale page) failed with “Unknown client.” It now syncs the parent’s project and records the sub’s last-synced time, so the error is gone and the timestamp shows correctly.
A sub-company’s Deliverables tab was empty even when its History showed the delivered assets — the tab wasn’t rolling up sub-company work. Fixed.
01Deliverables
A sub-company’s work is tagged to its parent, so the Deliverables tab — which looked them up by client — showed “no deliverables recorded yet” on the sub’s page even though History listed them. The tab now scopes by the sub’s initiatives (matching History), so the two agree.
The live SGA / Philippines (and client-local) clocks now show on mobile too, not just the desktop sidebar.
01Look & feel
The team clocks were desktop-only; they now appear as a compact strip in the mobile top bar (SGA + Philippines, plus the client’s local time when you’re on their page).
The client metrics row now shows how long it’s been since we last messaged a client and since they last messaged us — an at-a-glance nudge when a client has gone quiet.
01Client page
Two tiles on the client metrics row show the days since our last outbound message and since their last inbound one (real email/comms, internal notes excluded). Sub-company activity rolls up to the parent. So you can spot, for example, that a client wrote in today but we haven’t replied in three weeks.
The “Edit client” controls used to hide on the non-default initiative views, so from the board (where you land) there was no visible way to edit client details. They now sit right under the tabs on every view.
01Client page
The management bar — Edit client, communication settings, create initiative, and refresh — now shows under the tabs on every client view, including the default board. Previously it only appeared on the “Active/Future Initiatives” views, so editing details (like the new per-client timezone) was effectively hidden.
A task’s Hours total is now the sum of a visible ledger — the pre-existing hours as a baseline, each work session logged automatically, and manual add/subtract entries (each with a reason). Nothing is a black-box number you can’t trace.
01Tasks
A task’s Hours total is now computed as the sum of individual entries rather than a single editable number: an imported baseline (your existing hours, unchanged), each /start → /submit work session added automatically, and manual adjustments. Click the Hours value on any task to see the full breakdown.
Instead of overwriting the hours, you add or subtract time with a required note. Left a session running over lunch? Subtract the difference with a reason — the correction and its history stay visible and auditable, and the total recomputes itself.
The time between /start and /submit is now logged straight to the task’s hours — the repo no longer sends a separate number, so there’s one source of truth for effort.
A guardrail so a task doesn’t quietly get repurposed when it changes hands, History now shows work the moment it’s completed, live team clocks in the sidebar, a brand favicon, and popups that open gently instead of snapping.
01Tasks
Whenever you reassign a task that already has an owner, you get a prompt to create a follow-up instead — because that person may have already done work on it (the status isn’t always kept up to date). The follow-up is a new task assigned to the new person with the original linked as a dependency, so its context and findings carry over and the original keeps its history. You can still reassign anyway.
Any task pop-up now has a one-click “Create follow-up task” — a new task in the same initiative with this one linked as a dependency (auto-checked, easy to uncheck). Whoever picks it up — or Claude Code on /start — can pull the predecessor’s context instead of re-doing its job.
02History
History was built from completed week plans, so work finished in the current month stayed hidden until its week closed. It’s now driven directly by when each task was completed — finished work shows the same day.
The delivered-assets list now reads from the deliverables table (as real links), scoped by initiative so a sub-company’s history shows its own deliverables.
03Look & feel
The sidebar shows the current SGA (US Central) and Philippines time, and — when you’re on a client’s dashboard — that client’s local time too. Set a client’s timezone under Edit client.
The browser tab now shows an SGA monogram in the brand gold instead of a generic icon.
Quick-look, task-detail, and add-task popups now fade and rise in instead of snapping open.
Production and Manual tasks now get the same copy-ready /start command as every other task — you open the company repo as a helper “cockpit” to pull context and prep, do the work on the live site or in your tool, then /submit to log it.
01My Tasks
These used to show just a description with no command. Now they show the same copy-ready /start command as build tasks — opening the company repo as a helper cockpit to pull all the context and prep, while the actual work happens on the client’s live site or in your tool. Run /submit when you’re done to log the hours and a short work report.
The sidebar now carries the SGA logo, and comments you post in the app are attributed to the right person in the communication timeline.
01Look & feel
The top of the sidebar now shows the SGA logo (full width), still linking home. On mobile it shrinks to fit the top bar — a fuller mobile pass is still to come.
02Communication
A comment posted in the app is mirrored to Asana under the app’s account, which made the communication timeline show it as that account rather than the person who actually wrote it. The timeline now uses the real author we recorded, and the existing mis-attributed comments were corrected.
The board now shows logged hours on every initiative card (not just the board-wide total), each teammate’s priority list gets an editable task pop-up plus status/future filters, and a task can now link the other tasks it’s waiting on.
01Board
Each initiative card on the client board now shows the hours logged so far across its tasks — a running total per initiative, not just the board-wide figure. (Task cards already showed their own hours.)
02Team
On a team member’s priority list, every task now has a “View details” link that opens the same editable pop-up the board uses — status, owner, dates, hours, description, checklist, files, comments and dependencies, all right there.
The priority list can be filtered by status and by whether to include future work. By default it hides Future tasks and anything “Waiting on client approval”; click a chip to bring them back.
03Tasks
A task’s pop-up now has a Dependencies section (above Files) where you can link the other tasks it waits on, via an initiative → task picker. Linked tasks show with their initiative and whether they’re done.
The task pop-up now shows the task’s ID beneath “Open in Asana” — click it to copy, so a specific task is easy to reference or search for.
Your name comes across from Asana on sign-in (new team members are asked for it once), the task owner no longer shows as a number, and the changelog is now a proper part of the app — reachable from the sidebar, with a heads-up when there’s something new.
01Signing in
Signing in with an email that matches an Asana user now pulls your Asana display name onto your team-member record, instead of guessing from your email.
A brand-new team member we don’t have a name for is asked for their first and last name once, on first sign-in, before they get started — so work is always attributed properly.
02The changelog
A changelog icon now sits in the bottom sidebar row (beside Help / Hours / Recycle Bin / Settings) — one click, no typing the URL.
The changelog now opens inside the app with the full sidebar, like every other page.
When the app is updated, a small banner appears at the top linking to the changelog; dismiss it and it won’t return until the next update — so nobody has to be notified by hand.
03Fixes
Reassigning a task saved the person’s internal ID where their name belongs, so the owner showed as a number. It now stores the name (read from our database first), and the change sticks.
For a task near the bottom of the screen (e.g. the last item on My Tasks) the environment picker used to open off the bottom; it now flips above the icon so every option is reachable.
On the client board, edits, new tasks, and deletes made in a card’s pop-up now show on the board straight away, instead of only after reloading the page.
A client’s “Active Initiatives” and “Active Tasks” now count only truly active work — anything moved to Future (or Completed) is excluded — so moving everything to Future correctly shows 0 active.
Clearer per-client numbers with a past-due alert, team members that create themselves on login (and a fix so you always see yourself), running hours on the board, and work recaps from Claude Code that now land as task comments — with comments moving to a database-first, no-lose model.
01Client metrics
A client’s stat strip is now Active Initiatives · Active Tasks · Completed Initiatives · Completed Tasks — separate counts for each, instead of the old mixed set.
If anything open has slipped past its due (tasks) or end date (initiatives), a red banner lists it at the top of the client page so nothing quietly runs late.
02Team members
Signing in with an SGA email now creates your team-member record automatically — no waiting to be added by hand.
The Team page now always includes the person who’s logged in (previously a locked-down member could be filtered off their own team list), and it merges the live Asana roster with everyone in our database.
A team member can be marked active/inactive from their panel to keep the roster tidy.
03Board & tasks
The client board shows a running total of logged hours, and each task card shows its own hours.
Creating a task no longer leaves its status blank — it starts at “Not started”.
Removing a checklist item now asks you to type “delete” first, so items aren’t lost to a stray click.
04Work recaps & comments
When work is started/finished/recapped from Claude Code, it’s now posted as a comment on that task (resolved to the exact task, deliverable, or initiative) and shows in the initiative’s communication — one record, no separate “production” entry.
Posting a comment now writes to our database first and mirrors to Asana as a best-effort step, so an Asana hiccup can never lose a comment.
As comments are pulled from Asana, they’re now also recorded in our database automatically — so we accumulate the history naturally and can eventually stand entirely on our own.
Every task now shows where its work actually happens — and routes recurring monthly reports and plans to the right place — plus a cleaner, more conversational set of task pop-ups.
01Where work happens
Each task now shows a small colour-coded icon right after its title for where the work happens. Hover to see what it is; click to change it from a quick picker — on the board, in Full View, and in the task pop-up.
Working repo (the default), Company Resources, Report, Plan, Production, and Manual. Report and Plan are working-repo builds for recurring monthly deliverables — they route to the client repo’s reports/ and plans/ folders — while Production means the client’s live site and Manual is a plain to-do with no tooling.
Tasks worked in Claude Code (Working, Company, Report, Plan) still show their copy-ready “/start” command. Production and Manual tasks — which have no command to run — instead show a short description with a “View full” link, so your list stays honest about how each task is actually done.
02Task pop-ups
Opening a task shows a company · initiative breadcrumb, the environment icon in the title, the owner as a clickable avatar chip, and the key properties — status, phase, start, due, hours — in a single editable row, with an overdue due date flagged in red.
Comments now appear as a chat-style thread (avatar + speech bubble). Reply to a specific comment inline, with the “add a comment” box below the whole thread. Replies are threaded here and mirrored to Asana as a “↳ Re:” note.
The Add-a-task form has a new “Where” field (defaulting to Working repo) alongside owner, status, phase and dates.
Pop-ups now show a light loading placeholder while they load, instead of flashing in and jumping around.
A polish pass on the daily experience: an Asana-style board per client, personal API keys, edits that no longer scroll the page, a cleaner History, hours that read sensibly, and the groundwork for owning our own database backups.
01Client board
Opening a client now lands on a board — Active Initiatives · Active Tasks · Future Initiatives · Future Tasks — with initiatives and tasks as cards. Active Initiatives / Future Initiatives are still there as tabs.
Drag a card between columns to change its state (mirrored to Asana), reorder within a column, and tick a card to mark it complete — it drops off the board.
Click an initiative for its full card in a pop-up, or a task for its details + description/comments/files inline. Cards show the owner (colored initials), due date, and task count.
A task can hold a tick-off checklist — add, tick, rename, and remove items right in its pop-up, so one job is a single task instead of many. The board card shows a small progress badge (e.g. ✓ 3/7), and the list mirrors to Asana as a bullet checklist.
02Smoother editing
Changing a status, completing a task, deleting, moving a card — none of it scrolls you back to the top anymore. You stay exactly where you were.
Every edit shows a small spinner then a success/error message in the corner, so you know it took — no guessing.
The Communication editor now has a proper Close button, and the Quick Look close (×) is a normal, tappable size. The Settings icon is now an actual gear.
03History & reviews
Each month’s completed work is grouped under its initiative with a lifecycle tag; a completed initiative has a Reopen link right there (moves it back to Active). The old separate “completed initiatives” box is gone, with more breathing room between groups.
Pull a finished task or initiative back into Active from History when a client wants more done.
A review whose status shows client feedback is highlighted with an amber “New feedback” badge, so nothing waiting on us slips by.
04Sub-companies & hours
Filtering Full View by a sub-company (e.g. ChartPro) now shows its work, grouped under a sub-company subheading beneath the parent.
Each parent company gets a “(only)” entry that shows just its own work, excluding the sub-companies.
Hours are shown as clean whole numbers everywhere (report, Hours, Full View, History) — no more long trailing decimals.
Every company now has a short plain-English description of what it does.
05Working in Claude Code
Every team member gets their own key, so their Claude Code session connects to Status as them instead of sharing one secret. Yours lives on My Tasks; admins see and manage everyone’s in Settings.
A key pulls only what you’re allowed to see — and starting Claude Code on a task you’re assigned unlocks that task’s full context (initiative, comms, sibling work) and lets you submit, even for a client you otherwise can’t see.
Reset regenerates a key and revoke disables it; keys are stored encrypted so an admin can reveal any and a member their own. One click copies the exact “.env” line — the same variable the repos already use.
Submitting a deliverable records it and gives back its review link, but no longer auto-posts it to the client review — that’s now a deliberate, separate step.
Each submit’s hours accumulate onto the initiative (and its task) instead of overwriting, and start/finish time is tracked as real data.
A team member’s personal key can save company-level context for a company they’re working in — including sub-companies like Ideal Exit or ChartPro.
Submitting a new version (e.g. v4) now layers it on top of the same review item instead of appearing as a separate, duplicate deliverable — the review shows the latest with the earlier versions underneath.
A submit can point at the specific task it was done under, so the deliverable and its hours are logged against that task — not just the initiative.
Passing a deliverable’s id by mistake no longer creates a duplicate, and setting a status by name (e.g. “Ready to send”) either works or returns a clear error instead of silently doing nothing.
06Data safety
We now dump the whole database daily to a private repo we control — independent of the platforms — so the data survives even if an account is lost. Rolling out; a full restore drill is still pending before we call it done.
A big batch that makes Status a real day-to-day home — personal task lists, granular permissions, sub-companies, in-app reviews, delete with a recycle bin, and steady work toward standing independently of Asana.
01My Tasks
Signing in lands on your own work — your assigned tasks in priority order — instead of the client list.
Each task shows a copy-ready “/start Initiative: Task” command plus which company repo to open, so you can begin in seconds.
A status dropdown on each task (Not started · In progress · QA review by default) with a confirmation. Once a task moves past your allowed statuses, it drops off your list — like handing it off for review.
02Permissions & access
In Settings, pick a team member and set which clients and teammates they can view, plus their Communication and Settings capabilities.
A new member sees only their own tasks until granted access — enforced across home, sidebar, dashboards, Full View, Communication, and Reviews.
A clear “Admin — full access” checkbox, plus Can see hours, Can import plans, Can edit QA, and Can delete.
View the app exactly as another team member sees it, with a switch-back banner — handy for setting up and verifying access.
03Sub-companies
Sub-companies (e.g. ChartPro & SBMFRX under SBMF; Ideal Exit under DB-LTD) nest under their parent in the sidebar and inside the parent’s client card.
A company dropdown on initiatives assigns work to a sub-brand; the sub-company’s page shows what’s tagged to it. The parent still owns and bills — the tag is a lens.
Available when creating an initiative (dashboard, Full View, or a communication thread) and when submitting work.
A task created on a sub-company now lands in the parent’s Asana project under Active (or Future) instead of hiding as an unfiled subtask — and existing unfiled ones show a working “File” button.
04Quick look & Asana mirror
View and edit the description, read and post comments, and upload files — all in a pop-up.
Comments and files are stored in our own system and pushed to Asana — deliberate groundwork so Status can eventually stand on its own.
Attach a client-sent file to a task or initiative; it’s stored in our own file storage and copied to Asana. Deleting confirms first and removes it from both.
05Deliverables & submitting work
Adding a deliverable from any card, task, or the review editor opens the same guided QA + link flow, prefilled for that initiative.
The manual path submits a link — deliverable, report, plan, or brand asset — since finished files come through the repos. “Files” became “Submit”.
Define the client-facing review deliverable list right on the initiative, and start a new one from the guided wizard.
06Reviews
The sidebar “Reviews” opens a hub inside Status: a card per initiative with its open-review link and deliverables, filterable by client and lifecycle, and paginated.
Narrow down company → active / future / completed → initiative to find the right one quickly.
The review tool resolves a review by its initiative slug from our database (falling back to the older Asana mode), so reviews authored in Status open directly.
07Client view
The “Dashboard” tab is now “Active Initiatives”, with a new “Future Initiatives” tab beside it.
Edit client, New initiative, Communication, and Edit-details now open in clean modals instead of expanding inline on the page.
08Navigation
The root of the app and the logo both land on My Tasks, at the top of the sidebar. The client directory moved to its own /clients page.
The link on a client card (and in Full View) now reads “View company” instead of the confusing “View report”.
09Deleting & the Recycle Bin
A capability to delete tasks, initiatives, and comments — off by default, granted per member in Settings (admins have it).
A delete control on task rows, initiative cards, Full View, your My Tasks list, and quick-look comments — each with an “Are you sure?” step.
Deleted items move to a Recycle Bin where you can Restore them or Delete permanently — nothing vanishes by accident.
An initiative can’t be deleted while it still has active tasks — delete its tasks first, so nothing gets orphaned.
Deleting also sends the Asana task to Asana’s own 30-day trash, so deletes actually stick and your Asana stops filling up with test items.
10Fixes & reliability
A brief Asana/database hiccup now shows what’s in the database with a soft notice, instead of a full-page error.
Replying to an Asana task from a communication thread was failing; replies now post, with line breaks preserved.
Admins reliably get every capability at runtime (delete, Recycle Bin, etc.), matching what the Settings screen shows.
Fixed an empty Reviews list, overlapping text at the top of communication threads, and stray empty email threads.
Changes save to Status first and mirror to Asana as a best-effort step — so an Asana outage or a missing field no longer breaks the tool. Part of the goal of standing independently of Asana.
11Behind the scenes
Set up dedicated file storage so quick-look attachments have a permanent home we own.
Database changes store work-item comments and attachments, plus soft-delete records — the foundation for moving off Asana over time.