Files
GearBox/.planning/ROADMAP.md
Jean-Luc Makiola 31a9e3c1ff
All checks were successful
CI / ci (push) Successful in 1m54s
CI / e2e (push) Has been skipped
CI / deploy (push) Successful in 18s
fix(admin): move detail routes to directory structure to fix rendering
Admin item/tag edit pages weren't rendering because TanStack Router treated
them as children of the list route (which had no Outlet). Moving to
directory-based routing (items/index.tsx + items/$itemId.tsx) makes them
siblings that render directly in the admin layout.

Also adds UAT results for phases 35-38 and backlog item 999.12 (Admin UX Polish).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 21:40:57 +02:00

412 lines
22 KiB
Markdown

# Roadmap: GearBox
## Milestones
-**v1.0 MVP** — Phases 1-3 (shipped 2026-03-15)
-**v1.1 Fixes & Polish** — Phases 4-6 (shipped 2026-03-15)
-**v1.2 Collection Power-Ups** — Phases 7-9 (shipped 2026-03-16)
-**v1.3 Research & Decision Tools** — Phases 10-13 (shipped 2026-04-08)
-**v2.0 Platform Foundation** — Phases 14-23 (shipped 2026-04-08)
-**v2.1 Public Discovery** — Phases 24-27 (shipped 2026-04-12)
-**v2.2 User Experience Polish** — Phases 28-31 (shipped 2026-04-13)
-**v2.3 Global & Social Ready** — Phases 32-34 (shipped 2026-04-19)
- 🚧 **v2.4 Admin Foundation** — Phases 35-38 (in progress)
## Phases
<details>
<summary>✅ v1.0 MVP (Phases 1-3) — SHIPPED 2026-03-15</summary>
- [x] Phase 1: Foundation and Collection (4/4 plans) — completed 2026-03-14
- [x] Phase 2: Planning Threads (3/3 plans) — completed 2026-03-15
- [x] Phase 3: Setups and Dashboard (3/3 plans) — completed 2026-03-15
</details>
<details>
<summary>✅ v1.1 Fixes & Polish (Phases 4-6) — SHIPPED 2026-03-15</summary>
- [x] Phase 4: Database & Planning Fixes (2/2 plans) — completed 2026-03-15
- [x] Phase 5: Image Handling (2/2 plans) — completed 2026-03-15
- [x] Phase 6: Category Icons (3/3 plans) — completed 2026-03-15
</details>
<details>
<summary>✅ v1.2 Collection Power-Ups (Phases 7-9) — SHIPPED 2026-03-16</summary>
- [x] Phase 7: Weight Unit Selection (2/2 plans) — completed 2026-03-16
- [x] Phase 8: Search, Filter, and Candidate Status (2/2 plans) — completed 2026-03-16
- [x] Phase 9: Weight Classification and Visualization (2/2 plans) — completed 2026-03-16
</details>
<details>
<summary>✅ v1.3 Research & Decision Tools (Phases 10-13) — SHIPPED 2026-04-08</summary>
- [x] Phase 10: Schema Foundation + Pros/Cons Fields (1/1 plans) — completed 2026-03-16
- [x] Phase 11: Candidate Ranking (2/2 plans) — completed 2026-03-16
- [x] Phase 12: Comparison View (1/1 plans) — completed 2026-03-17
- [x] Phase 13: Setup Impact Preview (2/2 plans) — completed 2026-04-08
</details>
<details>
<summary>✅ v2.0 Platform Foundation (Phases 14-23) — SHIPPED 2026-04-08</summary>
- [x] Phase 14: PostgreSQL Migration (6/6 plans) — completed 2026-04-05
- [x] Phase 15: External Authentication (3/3 plans) — completed 2026-04-05
- [x] Phase 16: Multi-User Data Model (4/4 plans) — completed 2026-04-05
- [x] Phase 17: Object Storage (3/3 plans) — completed 2026-04-05
- [x] Phase 18: Global Items & Public Profiles (5/5 plans) — completed 2026-04-05
- [x] Phase 19: Reference Item Model & Tags Schema (3/3 plans) — completed 2026-04-05
- [x] Phase 20: FAB & Full-Screen Catalog Search (2/2 plans) — completed 2026-04-06
- [x] Phase 21: Item & Catalog Detail Pages (3/3 plans) — completed 2026-04-06
- [x] Phase 22: Add-from-Catalog & Thread Integration (2/2 plans) — completed 2026-04-06
- [x] Phase 23: Manual Entry Fallback (1/1 plans) — completed 2026-04-06
</details>
<details>
<summary>✅ v2.1 Public Discovery (Phases 24-27) — SHIPPED 2026-04-12</summary>
- [x] Phase 24: Public Access & Infrastructure (2/2 plans) — completed 2026-04-10
- [x] Phase 25: Catalog Enrichment & Agent Tools (2/2 plans) — completed 2026-04-10
- [x] Phase 26: Discovery Landing Page (3/3 plans) — completed 2026-04-10
- [x] Phase 27: Top Nav Restructure & Search Bar Rethink (4/4 plans) — completed 2026-04-12
</details>
<details>
<summary>✅ v2.2 User Experience Polish (Phases 28-31) — SHIPPED 2026-04-13</summary>
- [x] Phase 28: Profile & Logto Integration (3/3 plans) — completed 2026-04-12
- [x] Phase 29: Image Presentation (5/5 plans) — completed 2026-04-12
- [x] Phase 30: Onboarding Redesign (3/3 plans) — completed 2026-04-12
- [x] Phase 31: Mobile Polish (2/2 plans) — completed 2026-04-12
</details>
<details>
<summary>✅ v2.3 Global & Social Ready (Phases 32-34) — SHIPPED 2026-04-19</summary>
- [x] Phase 32: Setup Sharing System (4/4 plans) — completed 2026-04-15
- [x] Phase 33: Currency System (6/6 plans) — completed 2026-04-13
- [x] Phase 34: i18n Foundation (8/8 plans) — completed 2026-04-18
</details>
### v2.4 Admin Foundation (In Progress)
- [x] **Phase 35: Bug Fixes** — Clear the v2.3 backlog: wrong modal, missing images, slow loading, auth redirect, cursor pointer (completed 2026-04-19)
- [x] **Phase 36: Admin Role & Panel Foundation** — isAdmin flag, server mechanism to grant admin, gated /admin route with placeholder UI (completed 2026-04-19)
- [x] **Phase 37: Admin — Global Item Management** — Browse, edit, and delete global catalog items from the admin panel
- [x] **Phase 38: Admin — Tag Management** — Full tag CRUD with parent-child hierarchy in the admin panel
## Phase Details
### Phase 24: Public Access & Infrastructure
**Goal**: Anyone can browse the catalog, public setups, and user profiles without logging in
**Depends on**: Phase 23 (v2.0 complete)
**Requirements**: PUBL-01, PUBL-02, PUBL-03, PUBL-04, PUBL-05, INFR-01
**Success Criteria** (what must be TRUE):
1. Visiting the app without a session shows the app content immediately — no auth spinner, no redirect to login
2. An unauthenticated visitor can browse the global item catalog and open a catalog detail page
3. An unauthenticated visitor can view a public setup and see its items and totals
4. An unauthenticated visitor can view a user's public profile page
5. Attempting to create, edit, or delete any item/setup/thread while unauthenticated redirects to login
**Plans**: 2 plans
Plans:
- [x] 24-01-PLAN.md — Rate limit factory and tiered public endpoint protection
- [x] 24-02-PLAN.md — Client-side public access (render-first root, auth prompt, setup/catalog guards)
**UI hint**: yes
### Phase 25: Catalog Enrichment & Agent Tools
**Goal**: Global items carry attribution metadata and can be bulk-populated by an MCP agent swarm
**Depends on**: Phase 24
**Requirements**: CATL-01, CATL-02, CATL-03, CATL-04, CATL-05, SEED-01, SEED-02, SEED-03
**Success Criteria** (what must be TRUE):
1. A catalog item detail page displays image credit and a link to the image source
2. Attempting to import two items with the same brand and model updates the existing record rather than creating a duplicate
3. A single API call with an array of items imports them all, upserting on (brand, model) conflict
4. An MCP agent can call `upsert_catalog_item` with attribution fields and the item appears in the catalog
5. An MCP agent can call `bulk_upsert_catalog` with a batch of items and all are persisted with attribution
**Plans**: 2 plans
Plans:
- [x] 25-01-PLAN.md — Schema migration (attribution columns + unique constraint) and upsert service layer
- [ ] 25-02-PLAN.md — HTTP upsert routes, MCP catalog tools, and client attribution display
### Phase 26: Discovery Landing Page
**Goal**: The app opens to a public discovery feed with prominent catalog search, not a personal dashboard
**Depends on**: Phase 25
**Requirements**: DISC-01, DISC-02, DISC-03, DISC-04, DISC-05, INFR-02
**Success Criteria** (what must be TRUE):
1. The root URL shows a landing page with a catalog search bar at the top, visible without logging in
2. Below the search bar, a feed of popular public setups is visible with titles, creator names, and item counts
3. The landing page shows a section of recently added catalog items
4. The landing page shows a section of trending categories
5. A logged-in user sees a "Go to Collection" link or button on the landing page that navigates to their personal collection
**Plans**: 3 plans
Plans:
- [x] 26-01-PLAN.md — Discovery service layer with cursor pagination (TDD)
- [x] 26-02-PLAN.md — Discovery routes, server registration, and client hooks
- [x] 26-03-PLAN.md — Landing page UI and PublicSetupCard enhancement
**UI hint**: yes
### Phase 27: Top Nav Restructure & Search Bar Rethink
**Goal**: Replace the minimal TotalsBar with a persistent top navigation bar (logo, section links, catalog search, user avatar) and move mobile navigation to a bottom tab bar — elevating Setups to top-level and removing the landing page hero
**Depends on**: Phase 26
**Requirements**: NAV-01, NAV-02, NAV-03, NAV-04, NAV-05
**Success Criteria** (what must be TRUE):
1. A persistent top nav bar shows logo, Home/Collection/Setups links, catalog search, and user avatar on desktop
2. Clicking Collection or Setups while anonymous triggers AuthPromptModal instead of navigating
3. On mobile, navigation appears as a fixed bottom tab bar with Home, Collection, Setups, and Search icons
4. The landing page no longer has a hero section — content starts with Popular Setups
5. Setups has its own top-level route accessible from the nav bar, not nested in Collection tabs
**Plans**: 4 plans
Plans:
- [x] 27-00-PLAN.md — Wave 0: E2E test scaffolding for nav restructure
- [x] 27-01-PLAN.md — TopNav and BottomTabBar components
- [x] 27-02-PLAN.md — Setups top-level route and Collection tab simplification
- [x] 27-03-PLAN.md — Root layout wiring, hero removal, and visual verification
**UI hint**: yes
### Phase 32: Setup Sharing System
**Goal**: Setup owners can toggle visibility between private, link-shared, and public, with schema designed for future likes, friends, and collaborative editing
**Depends on**: Phase 28 (profiles working)
**Requirements**: TBD (discuss phase)
**Success Criteria** (what must be TRUE):
TBD (discuss phase)
**Plans**: 4 plans
Plans:
- [ ] 32-01-PLAN.md — Schema migration (isPublic to visibility) + shares table + full-stack update
- [ ] 32-02-PLAN.md — Share link service, API routes, and short URL redirect
- [ ] 32-03-PLAN.md — Share modal UI component with visibility picker and link management
- [ ] 32-04-PLAN.md — Shared setup viewer with token detection and read-only mode
**UI hint**: yes
### Phase 33: Currency System
**Goal**: Users can select their preferred currency (USD/EUR/GBP) and all prices display accordingly — full market-aware pricing system with community price data
**Depends on**: Phase 32
**Requirements**: D-01 through D-21 (from discuss phase)
**Success Criteria** (what must be TRUE):
1. User can select a market/currency in settings and all prices display in that currency
2. Catalog items show market-specific MSRP with community price aggregation per market
3. Converted prices are clearly labeled as approximate with ~ prefix and dual display format
4. Users can submit community prices for items they own (ownership validated)
5. Comparison table normalizes candidate prices to user's currency for apples-to-apples comparison
6. Exchange rates fetched daily from ECB via frankfurter.app with 24h cache
**Plans**: 6 plans
Plans:
- [x] 33-01-PLAN.md — Schema (market_prices, community_prices tables) + currency conversion service
- [x] 33-02-PLAN.md — [BLOCKING] Database migration generation and push
- [x] 33-03-PLAN.md — Market prices API, exchange rates endpoint, item/candidate currency context
- [x] 33-04-PLAN.md — Community price service (ownership validation, median aggregation) + setup totals
- [x] 33-05-PLAN.md — Formatter evolution, market/currency selector, auto-suggestion, conversion toggle
- [x] 33-06-PLAN.md — Catalog detail market prices, comparison table normalization, MCP tool updates
**UI hint**: yes
### Phase 34: i18n Foundation
**Goal**: Translation framework in place with string extraction, locale-aware formatting, and at least English + one additional language
**Depends on**: Phase 33
**Requirements**: TBD (discuss phase)
**Success Criteria** (what must be TRUE):
TBD (discuss phase)
**Plans**: TBD
### Phase 35: Bug Fixes
**Goal**: All five known v2.3 regressions and polish gaps are resolved — the app behaves correctly and consistently
**Depends on**: Phase 34 (v2.3 complete)
**Requirements**: FIX-01, FIX-02, FIX-03, FIX-04, FIX-05
**Success Criteria** (what must be TRUE):
1. Clicking "Add Candidate" on a thread page opens the add-candidate modal, not any other modal
2. Item images appear correctly on collection overview cards — no broken or missing images
3. Catalog and collection images appear without noticeable delay across all image-bearing pages
4. Clicking the sign-in button on an auth prompt navigates the user directly to the Logto login page
5. Every clickable or interactive element in the app (buttons, links, cards, badges) shows a pointer cursor on hover
**Plans**: 3 plans
Plans:
- [x] 35-01-PLAN.md — Thread modal fix, ItemWithCategory type extension, login auto-redirect (FIX-01, FIX-02, FIX-04)
- [x] 35-02-PLAN.md — Lazy loading + image skeleton states on GearImage and all card components (FIX-03)
- [x] 35-03-PLAN.md — Cursor-pointer audit across ItemCard, FabMenu, BottomTabBar (FIX-05)
**UI hint**: yes
### Phase 36: Admin Role & Panel Foundation
**Goal**: An admin user exists in the system with a verified flag, a server-side mechanism to grant admin status, and a protected /admin route that non-admins cannot reach
**Depends on**: Phase 35
**Requirements**: ROLE-01, ROLE-02, ADMN-01
**Success Criteria** (what must be TRUE):
1. The users table has an isAdmin boolean column and the schema migration applies cleanly
2. A developer can grant or revoke admin status for any user via a CLI script or seed mechanism without touching the UI
3. Navigating to /admin as an authenticated non-admin user returns an access-denied response (403 or redirect)
4. Navigating to /admin as an admin user loads the admin panel (even if it shows a placeholder)
**Plans**: TBD
**UI hint**: yes
### Phase 37: Admin — Global Item Management
**Goal**: Admins can browse, edit, and delete any global catalog item from the admin panel
**Depends on**: Phase 36
**Requirements**: ADMN-02, ADMN-03, ADMN-04
**Success Criteria** (what must be TRUE):
1. Admin can view a paginated list of all global catalog items with search and tag filtering
2. Admin can open any catalog item and edit its name, brand, model, weight, price, tags, image, and attribution fields — changes persist
3. Admin can delete a catalog item after confirming the action — the item is removed from the catalog and the deletion is irreversible
**Plans**: TBD
**UI hint**: yes
### Phase 38: Admin — Tag Management
**Goal**: Admins can fully manage the tag taxonomy — creating, renaming, organizing into a parent-child hierarchy, and deleting tags — from within the admin panel
**Depends on**: Phase 37
**Requirements**: ADMN-05, ADMN-06, ADMN-07, ADMN-08, ADMN-09, ADMN-10
**Success Criteria** (what must be TRUE):
1. Admin can view all tags in a list that shows each tag's name, item count, parent tag (if any), and direct children
2. Admin can create a new top-level tag by entering a name — the tag appears immediately in the list
3. Admin can rename any existing tag — the updated name is reflected everywhere the tag is used
4. Admin can assign a parent to any tag, making it a child in the hierarchy (e.g. "down" under "insulation")
5. Admin can remove a parent assignment from a tag, making it a top-level tag again
6. Admin can delete a tag; if items currently use that tag, a warning is shown before the deletion is confirmed
**Plans**: 2 plans
Plans:
- [x] 38-01-PLAN.md — Schema migration (parentId), service layer (CRUD + cycle detection), API routes, tests
- [x] 38-02-PLAN.md — Client hooks, tag list page (tree view + quick-add + search), edit page (rename/reparent/delete), sidebar activation
**UI hint**: yes
## Progress
| Phase | Milestone | Plans Complete | Status | Completed |
|-------|-----------|----------------|--------|-----------|
| 1. Foundation and Collection | v1.0 | 4/4 | Complete | 2026-03-14 |
| 2. Planning Threads | v1.0 | 3/3 | Complete | 2026-03-15 |
| 3. Setups and Dashboard | v1.0 | 3/3 | Complete | 2026-03-15 |
| 4. Database & Planning Fixes | v1.1 | 2/2 | Complete | 2026-03-15 |
| 5. Image Handling | v1.1 | 2/2 | Complete | 2026-03-15 |
| 6. Category Icons | v1.1 | 3/3 | Complete | 2026-03-15 |
| 7. Weight Unit Selection | v1.2 | 2/2 | Complete | 2026-03-16 |
| 8. Search, Filter, and Candidate Status | v1.2 | 2/2 | Complete | 2026-03-16 |
| 9. Weight Classification and Visualization | v1.2 | 2/2 | Complete | 2026-03-16 |
| 10. Schema Foundation + Pros/Cons Fields | v1.3 | 1/1 | Complete | 2026-03-16 |
| 11. Candidate Ranking | v1.3 | 2/2 | Complete | 2026-03-16 |
| 12. Comparison View | v1.3 | 1/1 | Complete | 2026-03-17 |
| 13. Setup Impact Preview | v1.3 | 2/2 | Complete | 2026-04-08 |
| 14. PostgreSQL Migration | v2.0 | 6/6 | Complete | 2026-04-05 |
| 15. External Authentication | v2.0 | 3/3 | Complete | 2026-04-05 |
| 16. Multi-User Data Model | v2.0 | 4/4 | Complete | 2026-04-05 |
| 17. Object Storage | v2.0 | 3/3 | Complete | 2026-04-05 |
| 18. Global Items & Public Profiles | v2.0 | 5/5 | Complete | 2026-04-05 |
| 19. Reference Item Model & Tags Schema | v2.0 | 3/3 | Complete | 2026-04-05 |
| 20. FAB & Full-Screen Catalog Search | v2.0 | 2/2 | Complete | 2026-04-06 |
| 21. Item & Catalog Detail Pages | v2.0 | 3/3 | Complete | 2026-04-06 |
| 22. Add-from-Catalog & Thread Integration | v2.0 | 2/2 | Complete | 2026-04-06 |
| 23. Manual Entry Fallback | v2.0 | 1/1 | Complete | 2026-04-06 |
| 24. Public Access & Infrastructure | v2.1 | 2/2 | Complete | 2026-04-10 |
| 25. Catalog Enrichment & Agent Tools | v2.1 | 2/2 | Complete | 2026-04-10 |
| 26. Discovery Landing Page | v2.1 | 3/3 | Complete | 2026-04-10 |
| 27. Top Nav Restructure & Search Bar Rethink | v2.1 | 4/4 | Complete | 2026-04-12 |
| 28. Profile & Logto Integration | v2.2 | 3/3 | Complete | 2026-04-12 |
| 29. Image Presentation | v2.2 | 5/5 | Complete | 2026-04-13 |
| 30. Onboarding Redesign | v2.2 | 3/3 | Complete | 2026-04-12 |
| 31. Mobile Polish | v2.2 | 2/2 | Complete | 2026-04-12 |
| 32. Setup Sharing System | v2.3 | 4/4 | Complete | 2026-04-15 |
| 33. Currency System | v2.3 | 6/6 | Complete | 2026-04-13 |
| 34. i18n Foundation | v2.3 | 8/8 | Complete | 2026-04-18 |
| 35. Bug Fixes | v2.4 | 3/3 | Complete | 2026-04-19 |
| 36. Admin Role & Panel Foundation | v2.4 | 2/2 | Complete | 2026-04-19 |
| 37. Admin — Global Item Management | v2.4 | 2/2 | Complete | 2026-04-19 |
| 38. Admin — Tag Management | v2.4 | 1/2 | In progress | - |
## Backlog
### Phase 999.1: Rewrite E2E Tests for OIDC Auth (BACKLOG)
**Goal**: E2E tests currently expect local username/password login but auth moved to external OIDC (Logto). Rewrite with mock OIDC provider or API-key-based auth bypass. Seed migration to Postgres is already done.
**Requirements**: TBD
**Plans**: TBD
Plans:
- [ ] TBD (promote with /gsd:review-backlog when ready)
### Phase 999.2: Revamp Onboarding Flow (BACKLOG)
**Goal**: Redesign the onboarding experience to match the current app style and flow. Replace the manual item edit form with the catalog search function. Visual refresh to align with the newer UI patterns.
**Status**: Promoted to Phase 30 (v2.2)
**Requirements**: TBD
**Plans**: TBD
Plans:
- [ ] TBD (promote with /gsd:review-backlog when ready)
### Phase 999.5: Legal Pages — ToS, Privacy Policy, and Compliance (BACKLOG)
**Goal**: Create Terms of Service, Privacy Policy, and any other required legal/compliance pages for a public-facing platform. Essential before opening to real users.
**Requirements**: TBD
**Plans**: TBD
Plans:
- [ ] TBD (promote with /gsd:review-backlog when ready)
### Phase 999.6: Admin Panel (BACKLOG)
**Goal**: Build an admin panel for reviewing user-submitted items (catalog submissions), managing global/reference items, and general platform administration. Includes approval workflows for community contributions.
**Requirements**: TBD
**Plans**: TBD
Plans:
- [ ] TBD (promote with /gsd:review-backlog when ready)
### Phase 999.7: User Feedback System (BACKLOG)
**Goal**: Add an in-app feedback collection mechanism so users can report bugs, suggest features, and share general feedback. Could be a simple form, widget, or integration with an external tool.
**Requirements**: TBD
**Plans**: TBD
Plans:
- [ ] TBD (promote with /gsd:review-backlog when ready)
### Phase 999.8: Analytics Integration (BACKLOG)
**Goal**: Integrate privacy-respecting analytics (PostHog, Umami, or similar) to understand usage patterns, popular categories, search behavior, and feature adoption. Self-hosted preferred to align with independent ethos.
**Requirements**: TBD
**Plans**: TBD
Plans:
- [ ] TBD (promote with /gsd:review-backlog when ready)
### Phase 999.9: Mobile App (BACKLOG)
**Goal**: Bring GearBox to mobile. Start with a PWA for quick wins (offline support, home screen install), then evaluate dedicated native apps (React Native / Flutter) for richer experience — camera for weight verification, barcode scanning, etc.
**Requirements**: TBD
**Plans**: TBD
Plans:
- [ ] TBD (promote with /gsd:review-backlog when ready)
### Phase 999.10: Monetization Strategy (BACKLOG)
**Goal**: Define how GearBox sustains itself financially. Options to explore: sponsored/promoted items (brand X promotes product Y), premium features, affiliate links. Critical tension: revenue vs. independent credibility — GearBox's value is unbiased gear data, so monetization must not compromise trust. Needs deep discussion before implementation.
**Requirements**: TBD
**Plans**: TBD
Plans:
- [ ] TBD (promote with /gsd:review-backlog when ready)
### Phase 999.11: Marketing Website (BACKLOG)
**Goal**: Build a separate marketing/brand website (www.gearbox.de) distinct from the app (app.gearbox.de). Hero section with search bar, value proposition, feature highlights, how-it-works, social proof, and sign-up CTA. This is the public-facing front door — the first thing people see before they enter the app. The current discovery page is the in-app experience; this is the standalone website around it.
**Requirements**: TBD
**Plans**: TBD
Plans:
- [ ] TBD (promote with /gsd:review-backlog when ready)
### Phase 999.12: Admin UX Polish (BACKLOG)
**Goal**: Overhaul admin panel UX with TanStack Table (sortable/groupable columns) and cmdk (GitLab-style composable filter bar with field→operator→value token input). Hide FAB on /admin/* pages. Replace tag inline form with popup modal. Show tags expanded on item rows (collapse to +N when tight). Group items by brand. Prominent search bar on both admin list pages.
**Requirements**: TBD
**Plans**: TBD
Plans:
- [ ] TBD (promote with /gsd:review-backlog when ready)