Skip to content

Flagship v33: elite pale redesign, top-deck prerequisites, mobile modal reachability, and session restore#1490

Open
MontrealAI wants to merge 4 commits into
mainfrom
codex/update-flagship-v33-html-redesign
Open

Flagship v33: elite pale redesign, top-deck prerequisites, mobile modal reachability, and session restore#1490
MontrealAI wants to merge 4 commits into
mainfrom
codex/update-flagship-v33-html-redesign

Conversation

@MontrealAI
Copy link
Copy Markdown
Owner

Motivation

  • Elevate the pale/white UI into a premium flagship v33 experience with stronger hierarchy, spacing, and editorial top-fold focused on access/readiness.
  • Surface the “Before You Transact” deck and agent/validator verification near the top so users can complete prerequisites without long scrolling.
  • Fix mobile MetaMask/in-app browser modal clipping so authorization/confirm buttons are reachable and the mobile dock cannot cover modals.
  • Improve local session continuity so returning from IPFS or wallet flows restores local-only inputs (terms, ENS labels, mint label) and attempts lightweight wallet re-detection.

Description

  • Added new flagship file ui/agijobmanager_genesis_job_mainnet_2026-03-05-v33.html derived from v32 and implemented a refined pale visual system, top-fold masthead, “Access / Readiness / Verification” deck, and elevated “Before You Transact” card.
  • Repositioned the existing #verifyEnsSection into the top prerequisites cluster at runtime (DOM reorder) so the original section and its IDs/hooks remain intact and JS events continue to function.
  • Implemented session continuity: persist/restore local state for termsAccepted, agentSub, clubSub, and mintAlphaLabel to localStorage under a safe key, restore on load, pageshow, visibilitychange, and focus, and attempt a silent eth_accounts re-detection to rehydrate wallet state and re-run lightweight verification when appropriate.
  • Mobile/modal system fixes: introduced CSS and small JS helpers to raise modal z-index, add body.has-open-modal to hide/suppress #v26MobileDock and #v26MobileSheet, implement sticky modal header + scrollable body + sticky footer (safe-area-aware), use --app-vh/visualViewport strategy and -webkit-overflow-scrolling: touch to avoid clipped confirm buttons on in-app browsers.
  • UI/UX and design-system work: new CSS tokens and a v33-flagship-refinement style block, card depth/edge refinement, typography treatments, and top-deck session-restore notice (#sessionRestoreNote).
  • Preserved all protocol hooks and critical IDs/DOM targets; did not change contract addresses, ABIs, function names, bond math, approval sequencing, or legal text content.

Testing

  • Ran an automated duplicate-ID scan (python+regex) against the new file — result: no duplicate id values (success).
  • Served the repository with a local HTTP server and captured a Playwright screenshot of the updated top fold for visual verification — page served and screenshot artifact generated (success).
  • Confirmed the presence and wiring of moved #verifyEnsSection, the termsAccepted checkbox, modal IDs (e.g. actionReviewModal, alphaMintReviewModal, alphaIdentityReviewModal, adminArgsModal, completionAssistantModal, jobDetailModal, commandPaletteModal), and mobile dock/sheet IDs; all remain present and unchanged.
  • Noted two environment/tooling observations: a transient Playwright invocation initially failed due to missing forwarded ports (fixed) and a local bs4-based parsing test was not available in the environment (library not installed); these are environmental and not changes to runtime UI behavior.

Codex Task

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0cb0d67ccf

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +7621 to +7624
}).filter(x=>x.priority < 90).sort((a,b)=>a.priority - b.priority || compareJobs(a.job, b.job, 'urgency')).slice(0, 6);
}
function renderAttentionQueue(){
const box = el('attentionQueueList')
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Sync userAccount from eth_accounts before refreshAll

silentWalletRefresh reads eth_accounts but never writes that value back to userAccount/APP_STATE.wallet.account unless the UI currently says "Not connected". If the active wallet changed while the page was backgrounded and accountsChanged did not fire, this path calls refreshAll(true) with stale account state, so reads and subsequent sends still use the old from address and can fail or act on the wrong identity.

Useful? React with 👍 / 👎.

Comment on lines +7596 to +7600
return {job, priority, title, reason, tags, quick};
}).filter(x=>x.priority < 90).sort((a,b)=>a.priority - b.priority || compareJobs(a.job, b.job, 'urgency')).slice(0, 6);
}
function renderAttentionQueue(){
const box = el('attentionQueueList')
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Clear verified role flags when membership is invalidated

invalidateVerification only updates badge text/output, but it does not clear verified.agent, verified.club, or alpha-role booleans. In the sameSession === false path, this leaves role-gated actions and checks still treating the user as verified (e.g., Apply/Validate flows that key off verified.*), so the UI can continue using stale ENS role state after an account/session mismatch.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 25e7d6b3e1

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +7616 to +7617
function renderAttentionQueue(){
const box = el('attentionQueueList')
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Preserve alpha mode when auto-revalidating saved ENS inputs

reverifySavedInputs always calls verifySubdomain(..., false), so after silentWalletRefresh any user who previously verified via the alpha path is downgraded to non-alpha (or fully invalidated if the label only exists under alpha.*). This happens on load/focus/pageshow and clears verified.agentAlpha/verified.clubAlpha, which blocks alpha-gated flows until the user manually re-verifies with the alpha buttons.

Useful? React with 👍 / 👎.

}).filter(x=>x.priority < 90).sort((a,b)=>a.priority - b.priority || compareJobs(a.job, b.job, 'urgency')).slice(0, 6);
}
function renderAttentionQueue(){
const box = el('attentionQueueList')
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Reset terms acceptance on wallet account changes

The accountsChanged handler no longer clears hasAcceptedTerms or unchecks termsAccepted, so switching to a different wallet keeps write gating unlocked if terms were accepted by the previous account. In this build, many write paths gate on mustBeReadyToWrite() (mainnet + terms), so a newly selected account can transact without explicitly re-accepting terms after the account switch.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d9b0075535

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

}).filter(x=>x.priority < 90).sort((a,b)=>a.priority - b.priority || compareJobs(a.job, b.job, 'urgency')).slice(0, 6);
}
function renderAttentionQueue(){
const box = el('attentionQueueList')
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Reset wallet state when eth_accounts returns no account

silentWalletRefresh returns immediately when eth_accounts has no entries, so a tab that was previously connected keeps stale userAccount/UI/write state if the wallet was locked or disconnected without an accountsChanged event. Since this function is the new background recovery path (focus/pageshow/visibilitychange), the no-account case must also clear connection state; otherwise subsequent reads/sends run under a no-longer-valid identity and fail unpredictably.

Useful? React with 👍 / 👎.

Comment on lines +7672 to +7676
return {job, priority, title, reason, tags, quick};
}).filter(x=>x.priority < 90).sort((a,b)=>a.priority - b.priority || compareJobs(a.job, b.job, 'urgency')).slice(0, 6);
}
function renderAttentionQueue(){
const box = el('attentionQueueList')
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Clear accepted terms in silent account-mismatch recovery

When silentWalletRefresh detects a different session/account, it only calls invalidateVerification(...) and leaves hasAcceptedTerms untouched, even though restoreAccessState can repopulate termsAccepted from local storage. Fresh evidence: the accountsChanged handler now clears terms, but this fallback branch does not, so wallet switches that rely on silent refresh can keep write gating unlocked for the new account without explicit re-acceptance.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant