Repository navigation
feat(tinyplace): resolve identity marketplace seller-side as web-only (#4920) - #5193
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughThe PR documents that identity marketplace seller actions are web-only, adds a Trading-tab note and CTA linking to ChangesSeller Web-Only Marketplace
Estimated code review effort: 2 (Simple) | ~10 minutes Suggested labels: Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9d0faa969b
ℹ️ 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".
| <p className="text-xs text-content-muted"> | ||
| Selling a handle or responding to offers happens on tiny.place. |
There was a problem hiding this comment.
Route new seller copy through i18n
This new user-visible note is hardcoded in a production app/src surface, and the CTA added just below is hardcoded too. In non-English locales the Trading tab will show English text despite the app contract requiring UI copy to go through useT() with locale entries, so please move the new strings into the i18n catalog before shipping.
AGENTS.md reference: AGENTS.md:L356-L360
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Intentional, and confirmed with the maintainer during design. IdentitiesSection.tsx is entirely un-i18n'd today — every user-visible string in this file is hardcoded English (e.g. the buy/commit banners "Commitment submitted.", "Purchased {name}", "Purchase failed."). Routing only the new note through useT() would make it the sole i18n'd string in an otherwise hardcoded file, and a full-file i18n conversion is out of scope for this change. The Frontend Checks (i18n) gate passes because it validates locale-file key parity, not hardcoded JSX. Leaving this thread open for a maintainer to decide whether to dismiss or track a separate full-file i18n conversion of this surface.
|
| Filename | Overview |
|---|---|
| app/src/agentworld/pages/IdentitiesSection.tsx | Adds a persistent sell-on-web info note and CTA to TradingTab; imports openUrl and debugFactory; adds SELL_ON_WEB_URL constant and header docstring update — all purely additive, existing flows untouched. |
| app/src/agentworld/pages/IdentitiesSection.test.tsx | Adds openUrl mock and two new tests covering note rendering (text content + analytics ID) and CTA click → openUrl call; test assertions match the implementation exactly. |
| src/openhuman/tinyplace/mod.rs | Doc-comment-only change: adds a Marketplace scope section clarifying buyer-side vs seller-side (web-only) boundaries; no executable code changed. |
| docs/superpowers/plans/2026-07-24-identity-marketplace-seller-web-only.md | New implementation plan doc; minor note: the test-snippet in Task 1 Step 2 uses stale text 'selling a handle or responding to offers' while the shipped component and tests use 'listing a handle for sale and accepting offers' — no runtime impact. |
| docs/superpowers/specs/2026-07-24-identity-marketplace-seller-web-only-design.md | New design spec doc recording the web-only scoping decision, component data flow, testing rationale, and rollback notes; documentation only. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[User opens Trading tab] --> B{Action}
B -->|Buy / Bid / Offer| C[In-app flow\nbuyIdentity / bid / offer]
B -->|Sell / Accept offer| D[sell-on-web note\ndata-testid=sell-on-web]
D --> E[Click 'Open tiny.place →'\ndata-testid=sell-on-web-cta]
E --> F[openUrl SELL_ON_WEB_URL\nhttps://tiny.place/identities]
F --> G[OS default browser\ntauri-plugin-opener]
C --> H[X402ConfirmDialog\npay on-chain]
Reviews (5): Last reviewed commit: "fix(tinyplace): entry-only CTA diagnosti..." | Re-trigger Greptile
There was a problem hiding this comment.
Actionable comments posted: 6
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@app/src/agentworld/pages/IdentitiesSection.tsx`:
- Around line 1018-1024: Add the stable analytics identifier
identities.sellOnWeb to the Button CTA in the IdentitesSection JSX, while
preserving its existing variant, click handler, test ID, and user-facing label.
In `@docs/superpowers/plans/2026-07-24-identity-marketplace-seller-web-only.md`:
- Around line 129-132: Consolidate validation at the required unit-and-E2E
level: in
docs/superpowers/plans/2026-07-24-identity-marketplace-seller-web-only.md lines
129-132, add a command and expected result for the seller web-only E2E scenario;
in
docs/superpowers/specs/2026-07-24-identity-marketplace-seller-web-only-design.md
lines 57-59, include E2E coverage in the test scope; in lines 89-93, remove the
unit-only testing statement; and in
app/src/agentworld/pages/IdentitiesSection.test.tsx lines 1289-1303, add the
corresponding E2E scenario or document an approved exception while preserving
the existing unit tests.
- Line 95: Resolve the Markdown lint warnings by removing the extra spaces
inside the inline code span near the start of the document and adding an
appropriate language tag, such as ts or text, to the fenced
documentation-comment block beginning with the doc comment.
- Line 9: Update the Tech Stack line in the identity marketplace seller plan to
specify React 19, matching the app package’s react and react-dom dependencies;
leave the other listed technologies unchanged.
In
`@docs/superpowers/specs/2026-07-24-identity-marketplace-seller-web-only-design.md`:
- Around line 95-98: Update the “Rollback / risk” section to remove the
inaccurate “one i18n key set” claim and state that rollback only removes the
additive UI note plus its related documentation and tests. Keep the existing
no-behavior-change description intact.
- Around line 76-80: Add the `text` language tag to the fenced code block
containing the Trading tab flow diagram, without changing the diagram content.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 10318480-b6ab-4f4e-a03a-ce74b78c3713
📒 Files selected for processing (5)
app/src/agentworld/pages/IdentitiesSection.test.tsxapp/src/agentworld/pages/IdentitiesSection.tsxdocs/superpowers/plans/2026-07-24-identity-marketplace-seller-web-only.mddocs/superpowers/specs/2026-07-24-identity-marketplace-seller-web-only-design.mdsrc/openhuman/tinyplace/mod.rs
Review — PR #5193 (comment only)
WalkthroughResolves #4920 by declaring seller-side identity trading web-only rather than building a seller stack against routes that do not exist, and replaces the in-app dead end with a pointer note + CTA to Verified the premiseI checked the claim rather than taking it on trust. The write-side marketplace surface in Also verified:
Actionable comments (3)1.
|
|
To use Codex here, create a Codex account and connect to github. |
…accurate copy (tinyhumansai#4920) Per M3gA-Mind review on tinyhumansai#5193: - tinyhumansai#1: 'buyer-side only' overstated the gap. Seller-side READS ship (marketplace_list_offers filters offers by the @handle you own); only seller WRITES are web-only. Corrected the mod.rs doc, the IdentitiesSection header docstring/comment, and the note copy ('Listing a handle for sale and accepting offers happens on tiny.place'). - tinyhumansai#3: moved the note above Recent Sales, directly under the listings, where a would-be seller looks. - nit: reworded the test's E2E-skip rationale. Hardcoded strings retained (maintainer decision, documented in PR body).
|
Addressed in 25e032e. #1 (seller reads exist) — verified and fixed. #3 (placement) — moved the note above Recent Sales, directly under the listings, where a would-be seller actually looks. nit — reworded the test comment to "one real cross-process effect (the OS browser opening) … just not worth an E2E" rather than "nothing to assert." #2 (route strings through |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@app/src/agentworld/pages/IdentitiesSection.tsx`:
- Around line 960-981: Add verbose, privacy-safe diagnostics to the seller CTA’s
onClick flow in the sell-on-web block, logging entry before invoking openUrl,
successful completion afterward, and caught errors with context. Preserve the
existing shared openUrl fallback behavior and avoid logging handle or other
sensitive user data; use stable, grep-friendly event messages.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 8f5693f8-35d1-4861-adac-febc0e080e5c
📒 Files selected for processing (3)
app/src/agentworld/pages/IdentitiesSection.test.tsxapp/src/agentworld/pages/IdentitiesSection.tsxsrc/openhuman/tinyplace/mod.rs
🚧 Files skipped from review as they are similar to previous changes (2)
- src/openhuman/tinyplace/mod.rs
- app/src/agentworld/pages/IdentitiesSection.test.tsx
Re-review of the fixup commit — PR #5193 @
|
|
To use Codex here, create a Codex account and connect to github. |
…sai#4920) Per CodeRabbit + the AGENTS.md debug-logging rule: the new external CTA had no entry/success/error diagnostics. Add namespaced 'agentworld:identities' debug logs around the openUrl call (privacy-safe — static URL only, no handle/PII), preserving openUrl's own https fallback.
…inyhumansai#4920) The .then/.catch outcome logs (lines 986-987) were uncovered → diff coverage 75% < 80%. openUrl already logs its own completion/error (low-PII telemetry breadcrumb) and https can't reject, so those duplicated it. Keep the entry log only — fully covered by the CTA click test.
|
Want your agent to iterate on Greptile's feedback? Try greploops. |
Summary
https://tiny.place/identitiesvia the existingopenUrlhelper (mirrors theX402ConfirmDialog/fundprecedent).IdentitiesSection.tsxheader docstring and in thesrc/openhuman/tinyplace/mod.rsmodule doc.Problem
Issue #4920 audited the identity marketplace and found the gap exists at every layer (frontend client, core handler, vendored SDK) — it is not merely an unwired UI. Confirmed with the maintainer that seller-side is intentionally web-only, so the fix is to remove the in-app dead-end and document the boundary, not to build a full seller stack against non-existent backend routes.
Solution
app/src/agentworld/pages/IdentitiesSection.tsx): a persistent info note at the bottom ofTradingTab— "Selling a handle or responding to offers happens on tiny.place." — with anOpen tiny.place →button that callsopenUrl('https://tiny.place/identities'). Hardcoded prod URL constant, matching theFUND_PAGE_URLprecedent (the tiny.place web frontend has no per-env base inconfig.ts).useT()). A single i18n'd string here would be inconsistent, and a full-file conversion is out of scope — so no locale-file changes.tinyplace/mod.rsmodule doc both record that seller-side is web-only and why.docs/superpowers/.Submission Checklist
IdentitiesSection.test.tsx: the note renders on the Trading tab, and the CTA callsopenUrlwith the tiny.place URL (mocked). All 72 tests in the file pass.onClick) are exercised by the two new tests. Rust change is a doc comment only (no executable lines).N/A: behaviour-only change(a link-out affordance; no new/renamed feature ID indocs/TEST-COVERAGE-MATRIX.md).## Related—N/A(no matrix row touched).openUrlhelper; no new network calls from the app.N/A(additive info note, no release-cut surface changed).Closes #NNN— see## Related.Impact
Related
AI Authored PR Metadata (required for Codex/Linear PRs)
Linear Issue
Commit & Branch
fix/4920-identity-marketplace-seller-web-onlyValidation Run
pnpm --filter openhuman-app format:check— prettier clean on changed filespnpm typecheck— passespnpm --filter openhuman-app test -- IdentitiesSection --run— 72 passedGGML_NATIVE=OFF cargo check --manifest-path Cargo.tomlexit 0;cargo fmt --checkcleanN/A— noapp/src-taurichanges (pre-pushpnpm rust:checkstill passed)Validation Blocked
command:N/Aerror:N/Aimpact:N/ABehavior Changes
Open tiny.place →button at the bottom of the Trading tab.Parity Contract
Duplicate / Superseded PR Handling
Summary by CodeRabbit