Strategic Growth Architect← Back to home

Changelog

Everything that has changed in the review tool, newest first. Each item includes a plain-English description and notes on how to verify it works.

2026-06-06

Heads-up banner for pages that need the live view

Deliverables can warn reviewers about things the tool can't show (e.g. scroll animations)

Some pages have behavior that only works in a real browser — scroll-driven animations, scrollytelling, anything that depends on the page scrolling itself. The review tool lays a page out full-height and scrolls it as one piece (which is what makes annotations lock to the content), so those effects don't play here. A deliverable can now declare a heads-up and the tool shows a sticky amber banner at the top of the Comments sidebar with the message and an "Open live page ↗" link — so reviewers know to view that bit live instead of thinking it's broken. Declare it on the page with a meta tag, a data attribute, or a JS variable (see the integration guide); a bare form uses default wording. The banner clears itself when you move to a deliverable that doesn't declare one.

How to test

On a page that declares a notice (e.g. the Peak Span "New Homepage" v2), open the review — an amber banner sits at the top of the Comments sidebar with the warning and an "Open live page" link that opens the deliverable in a new tab. Switch to a deliverable without a notice and the banner disappears.

2026-06-05

Fix: full-screen / scrollytelling pages no longer balloon

Pages built with full-screen heroes (100vh) now render correctly in review

Some deliverables — full-screen hero sections, scroll-driven "scrollytelling" pages — used CSS viewport-height units (vh). Because the review tool stretches the page to its full height so it scrolls naturally, those vh sections were measuring against the whole page instead of a screen and ballooned to an enormous blank height, so the page looked broken. The embedded review script now freezes vh units to a normal desktop height while a page is being reviewed, so these pages display at the right size. It only affects the page inside the review tool — the live page is unchanged — and applies automatically to every deliverable (no need to re-upload anything). Note: scroll-triggered animations won't play inside the static review frame, but all the content shows.

How to test

Open a deliverable that uses a full-screen hero or scrollytelling (e.g. the Peak Span "New Homepage"). The hero should be a normal height and the page should scroll normally — not a giant empty space or a page that never reaches the bottom.

2026-06-04

Internal-only deliverables & comments

Mark a deliverable "internal" so clients don't see it

You can now flag a deliverable as team-only in the markup builder (an "Internal — team only" checkbox per row). Internal deliverables — and any comments on them — are hidden from client reviewers and aren't sent to their browser at all; only SGA team emails (sga.team / strategicgrowtharchitect.com) see them, marked with a 🔒. Lets the team review something before the client ever sees it. Default is public, so nothing changes unless you check the box. (Note: the file itself is still at its public files.sga.team URL — this hides it in the review tool, it isn't a secret vault.)

How to test

In the markup builder, add two deliverables and check "Internal — team only" on one; save. Open the review as a team member — both show, the internal one has a 🔒. Identify as a client (non-SGA email) — only the public one appears. If every deliverable is internal, a client sees a friendly "nothing to review yet" message.

Mark an individual comment internal — and auto-internal on internal deliverables

Team members now get an "🔒 Internal — team only" checkbox on the comment box (both the annotation comment and the general comment). A comment marked internal is visible only to the SGA team and is never sent to the client — even on a deliverable the client can otherwise see. And to prevent mistakes: any comment you leave on an internal deliverable is automatically internal (the toggle locks on), so team discussion on a team-only deliverable can never leak. Internal comments show an amber "🔒 Internal" tag in the thread so you can tell at a glance what the client can't see. The checkbox only appears for SGA team members; clients never see it.

How to test

As a team member, leave a comment with the "Internal" box checked on a normal deliverable — it gets the amber tag. Reload as a client (non-SGA email): that comment is gone, normal comments remain. Comment on an internal deliverable without checking anything — it's still internal (the toggle is locked on) and stays hidden from clients.

2026-06-02

Client requests, Claude export, and comment attachments

Interactive requests on a deliverable cover page

A deliverable page can now list the things we still need from the client (logo, final domain, brand assets folder, etc.) as an answerable checklist in the sidebar. The client responds inline — type an answer, paste a link, or upload a file — and the response posts back to Asana. Answered items get a checkmark in the sidebar and are struck through on the page itself. Page authors mark items up with data-sga-request attributes; the same one-line snippet handles it.

How to test

Open a deliverable whose page declares requests (live demo: review.sga.team/example-cover-page.html, wired to a test task). The sidebar shows a "Needs attention from you" section with a row per request and an input matching its type. Answer one — the row collapses to a checkmark with your response, and the item strikes through on the page.

Attach a file, link, or code to any comment

Both the annotation composer and the general-comment box now have a "Attach" toggle (File / Link / Code). A reviewer can add one attachment in addition to the comment text. Files are uploaded to the Asana task; links and code snippets are saved with the comment.

How to test

Draw an annotation or write a general comment, click File / Link / Code under the text, add the attachment, then Send. The attachment appears on the comment card in the sidebar.

Download files clients upload

When a client uploads a file (answering a request or attaching to a comment), the filename becomes a download link. Clicking it downloads the file. The file lives as an attachment on the Asana task and the tool fetches it for you, so you do not need to be logged into Asana.

How to test

Answer a file request with a fresh upload, or attach a file to a comment, then click the filename — the file should download. (Files uploaded before this update show as plain text since their attachment was not tracked yet.)

Copy button on attached code

Code attached to a comment now shows in a formatted block with a one-click Copy button so the team can grab the whole snippet without selecting it by hand.

How to test

Attach a code snippet to a comment and send it. The code block in the sidebar has a "Copy" button in its corner — click it and the full snippet is copied to your clipboard.

Download client feedback as a brief for Claude (team only)

SGA team members get a "Download feedback for Claude" button below the comments. It downloads a single Markdown file of every comment — including the exact element each annotation points at (a CSS selector plus the text under the box), the viewport, a deep link back to the spot, and any attached files / links / code. It is built to hand straight to Claude Code or Cowork. Clients (non-SGA emails) do not see the button.

How to test

Sign in with an SGA email and open a review that has at least one comment. Click "Download feedback for Claude" below the comment thread — a .md file downloads listing each comment with its element locator and deep link.

2026-06-01

Comment dates, clickable links, markup builder, long-page fix

Comments show how long ago they were posted

Comment and reply timestamps now read as "just now / 5m ago / 3h ago / 3 days ago / 2 weeks ago / 3 months ago" instead of only a clock time, so you can tell at a glance how recent feedback is. The exact date and time is still available on hover.

How to test

Open a review with comments of varying ages. Each timestamp should show a relative "time ago" label; hover over it to see the full date and time.

URLs in comments are now clickable links

A URL pasted into a comment or reply now renders as a clickable link that opens in a new tab, instead of plain inert text.

How to test

Post a comment containing a URL (e.g. https://example.com or a www. address). It should appear as an underlined blue link and open in a new tab when clicked.

Markup builder: duplicate a deliverable row

Each deliverable row in the markup builder now has a Duplicate button. It inserts a copy directly below with the version auto-advanced (v1 to v2, v2 to v3), the same label and type, and the URL cleared — so adding a new version is one click plus pasting the new link.

How to test

On /markup, add a deliverable row and set its version. Click Duplicate — a copy appears right below it with the next version number, the same label and type, and an empty URL.

Markup builder button is now readable

The "Open markup builder" button on the home page was rendering as dark text on its dark background (effectively invisible). Its label is now white.

How to test

Open review.sga.team. The "Open markup builder →" button should have clearly readable white text.

Long deliverables are no longer cut off

Very long pages (multi-section strategy plans of 40,000px and up) were being clipped partway down — you could not scroll to the end. The tool now sizes the embedded frame to the full page height, so the entire deliverable is reviewable to its real footer. Deliverables hosted on files.sga.team also render with no intermittent blank/white bands.

How to test

Open a long deliverable and scroll to the very bottom. You should reach the real end of the page (its footer), with no clipping partway down.

2026-04-22

Post-QA iteration — scroll, loading, and cache fixes

Infinite scroll no longer gets stuck when annotations extend past the wrapper

On a page with annotations stored at Y positions beyond the initial iframe height (e.g. a reviewer dragged a box on a section that the iframe hasn't revealed yet), the scrollbar's max position was dictated by the annotation, not the wrapper. Expansion technically fired but the scrollbar couldn't grow — the user got visually stuck. The expansion step now pushes the wrapper past any annotation overflow on each scroll so subsequent scrolls always make progress.

How to test

On Priority Report (which has several pinned annotations past the initial view), scroll all the way to the bottom of the wrapper. The wrapper should keep expanding smoothly and eventually reveal the full page + a small patch of whitespace past the real end.

Switching deliverables no longer blocks infinite scroll on the next page

Visiting a snippet-enabled page (e.g. SGA Website), then switching to a non-snippet page (Priority Report) used to leave the review tool thinking a height had been reported — so infinite scroll was disabled even though the new page didn't report anything. A late postMessage from the previous iframe was landing after our reset. Now we ignore any height messages for 500 ms after a deliverable or version switch.

How to test

Visit the SGA Website, scroll to the bottom. Switch to Priority Report. Scroll to the bottom of the Priority Report — infinite scroll should kick in normally and reveal the full page.

Loading indicator while a page is fetching

Web deliverables now show a centered spinner with "Loading…" text until the page fires its onLoad event. Replaces the blank white flash / progressive render that used to appear during the fetch.

How to test

Open any web deliverable (SGA Website or Priority Report) or switch between them. A spinner should appear immediately and disappear once the page has loaded. Faster connections will see it briefly; slower pages more prominently.

CDN-cached pages always refreshed

Sites behind Cloudflare (or any CDN) can serve stale HTML that's hours or days out of date. The review tool now appends a random cache-buster query parameter (?sga_cb=…) to every web URL it loads, guaranteeing a fresh copy from origin. The "Open live page" button still uses the clean URL so reviewers don't see the query noise when they leave the tool.

How to test

Edit a web page, re-upload it, then open its review URL. The latest version should appear immediately — no need to purge the CDN manually. Confirmed using strategicgrowtharchitect.com/priorities/sbmf/ with a newly-added content-reporter snippet.

Click on embedded page shows an explanation toast

Clicking a link or menu inside the iframe is blocked (the tool is for visual review, not functional testing). Previously the click did nothing — felt like the page was frozen. Now a dark toast pops up top-center explaining the behavior and offering a one-click "Open live ↗" shortcut for functional testing. Auto-dismisses after 5 seconds.

How to test

Open any web deliverable, click anywhere on the page (not on an annotation). A toast should appear with the explanation and an "Open live ↗" button. It dismisses itself after a few seconds, or click the × to close.

"Open live page" button properly centered on the toolbar

The functional-testing CTA was previously offset to the right because flex-based centering was influenced by the left-side content. It now uses absolute positioning and sits at the true horizontal center of the toolbar, aligned with the viewport bar below.

How to test

Open any web deliverable. The "Need to test functionality? Open live page ↗" button in the toolbar should be centered horizontally, not offset.

Reporter snippet trusted as authoritative height

When a page reports its exact height via the content-reporter snippet, the review tool now fully trusts that number and disables infinite-scroll auto-expansion for that deliverable. Previously, scrolling to the bottom of a snippet-reporting page could still trigger growth past the reported size, reintroducing whitespace.

How to test

Open the SGA Website (which uses the snippet). Scroll all the way to the bottom. The scroll should stop exactly at the real end of the page — no growing whitespace beyond.

Markup builder — drag to reorder deliverables

The markup builder at /markup now supports drag-and-drop on each deliverable row. Drag the handle (or the whole row) to a new position; a drop indicator line slides between rows to show where it'll land. The order in the form matches the left-to-right order in the review tool's thumbnail strip.

How to test

Open /markup. Add a few deliverable rows. Drag them to reorder. Save to an Asana task and confirm the task's [REVIEW] block matches the new order.

Markup builder — always blank-line-separated blocks

Earlier, saving markup sometimes wrote the [REVIEW] block directly against the previous line of the description, which caused the parser (which needs [REVIEW] at the start of a line) to miss it. The builder now forces a blank line before and after the block regardless of the surrounding content.

How to test

Use /markup to edit an existing task. Save. The Asana task's description should have a clear blank line before [REVIEW]. Reopen the review URL — deliverables should still load correctly.

Version field is a dropdown (v1 through v10)

The markup builder's version field is now a dropdown to avoid typos like "V1" vs "v1" that would cause versions not to group together. A note next to the Deliverables heading reminds users that labels must match exactly for version grouping to work.

How to test

On /markup, click the version dropdown on a row — it should list v1 through v10. If a task already has a non-standard version (e.g. "v11"), it'll appear as an extra option so it isn't lost.

2026-04-22

Click-blocker + functional-testing escape hatch

Clicks on the embedded page are now blocked by default

The in-tool iframe is strictly a visual-review surface. Clicking a link, menu, or button inside the page no longer navigates the iframe or leaves annotations orphaned on a different page. This also removes the jarring snap-back flash when clicking nav links.

How to test

Open any responsive/fixed deliverable (ChartPro Website, Priority Report). Click a link or menu item inside the page — nothing should happen. Annotations you have drawn stay clickable normally.

New "Open live page" button for functional testing

Since in-tool clicks are blocked, the toolbar now has a centered button that opens the real page in a new browser tab. Reviewers who need to test links, menus, or interactive elements open the live site there (full browser, no iframe constraints), test as needed, then come back to the review tool. Shows only on web deliverables (responsive/fixed) — PDFs use Download instead.

How to test

Open ChartPro Website. See "Need to test functionality? Open live page ↗" in the center of the toolbar. Click it — the live page opens in a new tab. Click it on a PDF deliverable — the button should not appear.

2026-04-22

Markup builder + annotation anchor drift fix

Build or edit the [REVIEW] block via a form

New page at /markup lets the team fill in deliverables (label, URL, type, version) without hand-writing the pipe-separated syntax. Load an existing task by pasting its GID to edit its current deliverables, then copy the markup or save it straight back to the task. When saving, the tool also stamps a one-click "Edit deliverables" link at the top of the task notes so future edits are one click away from inside Asana.

How to test

Go to review.sga.team → "Open markup builder". Add a few rows, preview the generated markup, copy it. Then paste an existing task's GID, click Load, and verify the rows match the task's current deliverables. Edit a row, click Save to Asana, and refresh the Asana task — the notes should have your updated [REVIEW] block plus the edit link at the top.

Linked snippet (recommended)

The content-reporter snippet is now a one-line <script src="..."> tag pointing at the hosted file. This means updates to the script propagate automatically without redeploying client sites. The inline self-contained version was removed to simplify install.

How to test

Go to the landing page → "Iframe Content Reporter" section. Copy the one-line tag. Paste it before </body> on a test SGA-built page. Open that page via the review tool — annotations should stay anchored when jump links are used.

Annotations no longer drift when navigating within a page

When the reviewer clicks a jump link (anchor) on a page that includes the SGA height-reporter snippet, annotations now follow the scrolling content. Pages without the snippet keep their previous behavior (annotations stay pinned to the drawn position). Nav links that load a different URL inside the iframe now snap back to the original review URL automatically so annotations stay valid.

How to test

On a Priority Report (fixed) or any page with anchor links, draw an annotation on a specific section. Click a jump link to another section inside that same page. The annotation should stay on the original section (follow the content) for pages using the snippet. For any nav link that tries to load a different URL inside the iframe, the view will bounce back to the original page.

Snippet now reports scroll position too

The optional content-reporter snippet was updated to also post the current scroll position. Pages that include it get full anchor-following support in the review tool. Replace any previously-pasted snippet with the new version from the landing page.

How to test

On the landing page (review.sga.team), the snippet in the Iframe Content Reporter card is now the new version. Copy or download it and replace any old copies on SGA-built sites.

2026-04-21

Review platform QA round + scroll rebuild

Viewport-specific comments no longer bleed between viewports

Comments drawn on Desktop 1280 no longer show up on Mobile or Tablet tabs, and vice versa. Each viewport tab now strictly shows only its own annotations.

How to test

On ChartPro Website: draw one annotation on Desktop 1280, one on Tablet, one on Mobile. Click each viewport tab and confirm only that viewport's comment is visible.

Comments stay scoped to the version they were made on

Previously, a comment made on V1 of a deliverable would also appear on V2. Now comments stay with the version they were drawn on.

How to test

On Proposal: leave an annotated comment on V1, switch to V2 (dropdown), leave another comment. Switching between versions should only show each version's own comments.

Clicking a comment card jumps to the annotation

Clicking a comment in the sidebar now scrolls the viewer to the annotation, switches viewport if needed, and pulses the box briefly so you can spot it.

How to test

Draw an annotation near the bottom of a long page. Scroll back to the top. Click the comment card. The viewer should scroll the annotation into view and pulse it.

Annotation colors and numbers now match between sidebar and viewer

Previously the number and color of an annotation could differ between what the sidebar showed and what the viewer overlay showed. Now they're always consistent.

How to test

Draw three annotations. Each should have a unique color (red #1, blue #2, green #3). When you click a card, the annotation in the viewer should be the same color and number as the card.

Download button only shows on downloadable deliverables

The Download button was appearing on websites and fixed pages. Now it only shows on deliverables marked "downloadable" (usually PDFs intended for client use). Clicking it triggers a real file download rather than opening the URL in a new tab.

How to test

Priority Report (fixed) → no Download button. ChartPro Website (responsive) → no button. Proposal (downloadable) → button is visible and clicking downloads the file to your computer. Social Posts (proof) → shows "proof only" text instead.

Annotations no longer drift while scrolling

Scroll events over the embedded page no longer cause annotations to appear to shift. Page pages render at a fixed size and the device frame handles scrolling externally.

How to test

Open Priority Report. Scroll up and down through the content. Annotations should stay locked to the page areas they mark.

Every device frame now scrolls the same way

Mobile, Tablet, and Desktop previews all share the same scroll pattern — scrollbar is inside the device frame, title bar / bezel stays visible. Switching between viewports feels consistent now.

How to test

Switch between Mobile, Tablet, and Desktop 1280/1440/1680/1920 on a responsive deliverable. Scroll each one. The scrollbar should always be inside the device frame.

Infinite scroll for long pages

Embedded pages now start at a sensible initial height and expand as you scroll near the bottom. Short pages show no extra whitespace; long pages can be reviewed all the way down without the page cutting off.

How to test

Open ChartPro Website on mobile. Scroll down continuously — the page should keep loading more content smoothly. Try the same on Priority Report desktop.

Viewer resets to top when switching deliverables/viewports

Changing deliverable, version, or viewport now scrolls the viewer back to the top automatically, so you're always starting a new review from the top of the page.

How to test

Scroll to the bottom of a deliverable. Switch to another deliverable. The new one should load at the top, not at the scroll position of the previous one. Exception: clicking a comment card scrolls to that comment — that's expected.

Loading feedback when submitting comments

The Submit, Send, and Approve buttons now show "Sending…" while the comment or approval is being posted to Asana, so you know the click was received.

How to test

Draw an annotation, type a comment, click Submit. The button should say "Sending…" briefly before the comment appears in the sidebar.

SGA team quick-access page

Visiting review.sga.team without a task ID now shows a form where SGA team members can paste any Asana task GID or URL and jump straight to that task's review page.

How to test

Go to review.sga.team (no GID in the URL). Paste a task GID or a full Asana URL, click Open. You should land on that task's review page.

Review Link custom field auto-populates in Asana

The first time someone opens a review URL, the "Review Link" custom field on the Asana task is filled in automatically. No more manually copying the URL into the field.

How to test

Find an Asana task with a [REVIEW] block and an empty Review Link field. Open that task's review URL in the browser. Refresh the Asana task — the Review Link should now contain review.sga.team/{gid}.

Task status flips to "New client feedback" on client comments

When a client submits a comment through the review tool, the task's Status custom field in Asana automatically updates to "New client feedback" so the team can spot tasks with unread input at a glance.

How to test

Set a task's Status to anything other than "New client feedback". Identify yourself as a client (non-SGA email) in the review tool and leave a comment. Refresh the Asana task — the status should now be "New client feedback".

Team members can reply and resolve comments

Reviewers with SGA email addresses see Reply and Resolve buttons on each comment. Resolving requires a short explanation of what was done. Resolved comments are dimmed and tagged in green.

How to test

Log in with an SGA email (@strategicgrowtharchitect.com or @sga.team). Reply to a comment. Resolve a comment (must include an explanation). Reload — replies and the resolved state should persist.

Optional page-height snippet for SGA-built sites

For pages SGA controls, a small JavaScript snippet can be added so the review tool renders the page at its exact height on load (no infinite-scroll expansion). Copy or download the snippet from the landing page.

How to test

Go to the landing page (review.sga.team). Scroll to "Iframe Height Reporter (optional)". Copy or download the snippet. Add it to a test page, then open that page in the review tool — it should render at its real height.