Add AGIJobManager v26 single-page Mainnet UI (agijobmanager_genesis_job_mainnet_2026-03-05-v26.html)#1462
Add AGIJobManager v26 single-page Mainnet UI (agijobmanager_genesis_job_mainnet_2026-03-05-v26.html)#1462MontrealAI wants to merge 2 commits intomainfrom
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6bdaf7099e
ℹ️ 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".
| const title = (el("jobTitle")?.value || "").trim(); | ||
| const summary = (el("jobSummaryBuilder")?.value || "").trim(); | ||
| const details = [title, summary].filter(Boolean).join(" — "); | ||
| if(el("jobDetails")) el("jobDetails").value = details.slice(0, 204 |
There was a problem hiding this comment.
Align ENS verification with on-chain authorization
The UI currently marks a subdomain as verified only when NameWrapper.ownerOf(tokenId) === userAccount, but protocol authorization is broader: ENSOwnership.verifyENSOwnership also accepts getApproved, isApprovedForAll, and resolver-address ownership paths (contracts/utils/ENSOwnership.sol:32-45,69-112). Because write flows gate on verified.agent / verified.club before sending transactions, valid users in those supported authorization modes are incorrectly blocked from applying or voting even though the contract would accept them.
Useful? React with 👍 / 👎.
| const summary = (el("jobSummaryBuilder")?.value || "").trim(); | ||
| const details = [title, summary].filter(Boolean).join(" — "); | ||
| if(el("jobDetails")) el("jobDetails").value = details.slice(0, 204 |
There was a problem hiding this comment.
Fix ENS admin argument schemas to match contract params
The ENS admin form schema labels revokePermissions and lockJobENS arguments as ensRegistrar and publicResolver, but ENSJobPages actually expects employer and agent for those positions (contracts/ens/ENSJobPages.sol:494-506); the same block also labels createJobPage as jobCompletionURI instead of specURI (contracts/ens/ENSJobPages.sol:253-255). Operators following these prompts will submit incorrect addresses/URI semantics, causing failed calls or incorrect ENS permission/text updates.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2555f898a7
ℹ️ 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".
| const data = await res.json(); | ||
| const cid = data.IpfsHash || data.cid || data.Hash || data.Value?.Cid?.["/"] || data.value?.cid || ""; | ||
| lastUploadedMetadataURI = cid ? `ipfs://${cid}` : ""; | ||
| if(el("generatedSpecURI")) el |
There was a problem hiding this comment.
Correct stale-dispute boolean semantics in admin schema
The admin argument schema labels resolveStaleDispute's boolean as approveCompletion, but the contract parameter is employerWins (contracts/AGIJobManager.sol:999 and docs/ui/abi/AGIJobManager.json). This inversion can drive operators to submit true expecting an agent-win completion path, while the contract interprets true as employer refund, causing an irreversible wrong settlement outcome.
Useful? React with 👍 / 👎.
| const cid = data.IpfsHash || data.cid || data.Hash || data.Value?.Cid?.["/"] || data.value?.cid || ""; | ||
| lastUploadedMetadataURI = cid ? `ipfs://${cid}` : ""; | ||
| if(el("generatedSpecURI")) el |
There was a problem hiding this comment.
Align admin authorization gating with method access control
The UI groups resolveDisputeWithCode and resolveStaleDispute under one moderatorMethods set, then authorizes manager calls as owner-or-moderator for those methods. On-chain access is split (resolveDisputeWithCode is onlyModerator, while resolveStaleDispute is onlyOwner in contracts/AGIJobManager.sol:970-999), so this gate wrongly allows one role for each method and leads to avoidable reverting admin transactions (and gas loss).
Useful? React with 👍 / 👎.
Motivation
Description
ui/agijobmanager_genesis_job_mainnet_2026-03-05-v26.htmlcontaining the full UI, styles, and client-side logic for the v26 experience.AGIJobManager,ENSJobPages, ERC-20,AGIALPHAEqualMinterVault,NameWrapper, resolver) and implement wallet connect, chain detection, and read/write gating (updateWriteGate,requireConnected,requestMainnetSwitch).ensureApproval,ensureApprovalForToken), deposit/mint via vault (prepareOfficialAgialphaMint,mintOfficialAgialpha), deBridge embed and route locking, completion assistant (URI normalization and metadata inspection), and per-job detail modal with timeline and settlement simulation.NameWrapper, a local transaction activity feed (TX_ACTIVITY_KEY), an autonomous agent packet generator, a command palette, and mobile-first enhancements (v26mobile dock and sheet).Testing
Codex Task