Skip to content

fix(design): what designing eight brands end to end turned up - #843

Closed
mortondev wants to merge 2 commits into
feat/portal-design-v2-phase3-agentsfrom
feat/portal-design-v2-phase3-polish
Closed

mortondev wants to merge 2 commits into
feat/portal-design-v2-phase3-agentsfrom
feat/portal-design-v2-phase3-polish

Conversation

@mortondev

@mortondev mortondev commented Oct 30, 2026 •

Copy link
Copy Markdown
Member

The tenth of the stack that builds a new design engine for the portal. Eight local workspaces were branded end to end through Appearance, with Quackback AI and the Brand and Sections controls, then the live portals were checked on desktop, phone and in dark mode, over three rounds. This fixes what that turned up. Behind the portalDesignV2 Labs switch.

Saving

  • The first save of a new design could race another (a person's autosave and Quackback AI's save) and fail with a duplicate row. It happened on every workspace. The second save now waits for the first's row and updates it.
  • The draft waits for a save already under way before Quackback AI reads it, and a timer that has fired no longer counts as pending.
  • A request that fails on its way now answers in the conversation, instead of leaving it quiet.

The band

  • A band with no headline drew an empty block of colour. A band now needs a headline, in the preview too, so the preview shows what visitors see; Sections says so when one is missing.
  • Tint and fade used the theme's neutral hover colour, so a burgundy brand got a grey band. They now mix the brand colour into the page (12% for a tint, 20% at the top of a fade), with text still solved to 4.5:1.
  • Under a centred header, the headline and subtitle centre too.

Review and publish

  • A draft of two dozen changes pushed Publish below the window; the list now scrolls inside the dialog.
  • Uploaded images (the logo, favicon and share image) are named, and read as an uploaded image, never as a storage key.

Quackback AI

  • It can write the welcome message text, as paragraphs; turning the message on with no text was another empty block.
  • When everything asked for is already set, its own reply stands, rather than "the design does not offer that".
  • Three looks with headlines no longer run past the answer's length limit.
  • Switches read On and Off in the change card.

Verification

  • Round 3: all eight workspaces branded without an error; each request answered in 3 to 10 seconds; a request outside the picked section offered "Ask about the whole site", and asking again made the change.
  • New tests, each red first: the band needs a headline, tint and fade use the brand colour, the draft waits for a save under way (and starts no second one), a failed request answers, the welcome text round-trips, a request whose changes are already set keeps its reply.

Eight local workspaces were branded through Appearance, with Quackback AI
and the Brand and Sections controls, and the live portals checked on
desktop, phone and in dark mode. This fixes what that found:

- The first save of a new design could race another, such as a person's
  and Quackback AI's, and fail; the second now updates the row the first
  made. The draft also waits for a save under way before Quackback AI
  reads it, and a request that fails says so in the conversation.
- A band with no headline drew an empty block. A band now needs a
  headline, in the preview too, and Sections says so.
- Tint and fade used a neutral grey. They are now a tint of the brand
  colour, with text still solved to 4.5:1.
- Under a centred header the headline centres too.
- Quackback AI can write the welcome message text, keeps its own reply
  when what was asked for is already set, and has room for three looks
  with their headlines. Switches read On and Off in the change card.
@mortondev
mortondev added this pull request to stack #833 October 30, 2026 23:34
A draft of two dozen changes pushed Publish below the window; the list now
scrolls inside the dialog. Uploaded images (the logo, favicon and share
image) are named and read as an uploaded image, never as a storage key.
@mortondev

Copy link
Copy Markdown
Member Author

Condensed into #878. The stack is now five PRs, #878 to #882; this branch is kept as it was.

@mortondev mortondev closed this Nov 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant