makiolaj
672b17fd13
feat(i18n): extract strings from navigation, dialogs, onboarding, settings, and login
...
- Add useTranslation() to TopNav, BottomTabBar, FabMenu, UserMenu
- Internationalize ConfirmDialog, AuthPromptModal, ExternalLinkDialog
- Extract all onboarding flow strings (Welcome, HobbyPicker, ItemBrowser, Review, Done)
- Internationalize settings page (weight unit, currency, API keys, import/export)
- Internationalize login page and root error boundary
- All dialogs in __root.tsx use t() for UI chrome
Phase 34, Plan 02 (core navigation and global UI)
2026-04-13 18:19:29 +02:00
makiolaj
8c0fb31df2
feat(i18n): install react-i18next, create English locale files, and initialize i18n framework
...
- Install i18next, react-i18next, i18next-browser-languagedetector
- Create 6 namespace JSON files (common, collection, threads, setups, onboarding, settings)
- Initialize i18n with language detection (localStorage + navigator)
- Wire i18n import in main.tsx before React rendering
Phase 34, Plan 01
2026-04-13 18:13:55 +02:00
makiolaj and Claude Opus 4.6
de82eefa74
docs(phase-33): complete phase execution
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 18:10:47 +02:00
makiolaj
24304aa8aa
docs(34): create phase plans for i18n foundation
2026-04-13 18:10:36 +02:00
makiolaj and Claude Opus 4.6
e2127ebb84
docs(33): add summaries for plans 05 and 06 (wave 3 complete)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 18:10:24 +02:00
makiolaj and Claude Opus 4.6
37edd0edfd
feat(33-06): add market prices section to catalog detail page
...
- Add useGlobalItemPrices and useGlobalItemCommunityStats hooks
- Add MarketPricesSection component with user's market MSRP prominent
- Show community price stats per market with median and report count
- Collapsible "Other Markets" section (collapsed by default)
- Import useCurrency, useExchangeRates, formatPrice for market display
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 18:09:56 +02:00
makiolaj and Claude Opus 4.6
02fcae12f0
feat(33-05): market/currency selector, dual price format, conversion toggle
...
- Add formatDualPrice() with ~prefix for approximate conversions (D-14)
- Evolve useCurrency() to return CurrencyContext with currency, market, showConversions
- Create useExchangeRates hook + convertClientPrice utility
- Redesign settings: Market & Currency selector, Show Converted Prices toggle
- Add locale-based auto-suggestion banner for first-time currency selection (D-13)
- Update useFormatters to destructure from new CurrencyContext
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 18:08:53 +02:00
makiolaj and Claude Opus 4.6
d0bbf48bb5
docs(33): add summaries for plans 03 and 04 (wave 2 complete)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 18:07:16 +02:00
makiolaj and Claude Opus 4.6
3df9eece83
feat(33-04): add community price service, API routes, and setup currency metadata
...
- Create community-price.service.ts with ownership validation, upsert, median aggregation
- Create community-prices route (GET stats public, POST requires auth + ownership)
- Register community-prices route with public GET access
- Add priceCurrency to both getSetupWithItems and getSetupWithItemsById
- Aggregation uses PERCENTILE_CONT(0.5) with 3-report minimum threshold
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 18:06:48 +02:00
makiolaj and Claude Opus 4.6
7d6c548811
docs: add phase 32 decisions to STATE.md
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 18:05:54 +02:00
makiolaj and Claude Opus 4.6
52dce7b72b
feat(33-03): add market prices API, exchange rates endpoint, currency context
...
- Create market-price.service.ts with getMarketPrices, upsertMarketPrice
- Create exchange-rates route (GET /api/exchange-rates, public)
- Create market-prices route (GET/POST /api/market-prices/global-items/:id/prices)
- Register new routes in server index with public GET access
- Add priceCurrency to item service getAllItems/getItemById/createItem
- Add foundPriceCents/Currency/Date to thread candidate select and create/update
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 18:05:24 +02:00
makiolaj and Claude Opus 4.6
7eb5335a88
docs: add phase 32 plan summaries
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 18:05:24 +02:00
makiolaj and Claude Opus 4.6
0b46eff243
feat: add shared setup viewer with token detection and read-only mode
...
Detect ?share=token query param on setup detail page, fetch via
/api/shared/:token, and display read-only view with "Shared setup"
banner. Hide all owner controls (add items, share, delete, classification)
in shared view. Show "Link not available" error for invalid tokens.
Plan: 32-04 (Setup Sharing System - Shared Setup Viewer)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 18:04:41 +02:00
makiolaj
a531581623
docs(34): add research and validation strategy
2026-04-13 18:03:57 +02:00
makiolaj and Claude Opus 4.6
f8ab69684a
docs(33): add summaries for plans 01 and 02 (wave 1 complete)
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 18:02:57 +02:00
makiolaj and Claude Opus 4.6
7003e998f9
feat: add share modal with visibility picker and link management
...
Create ShareModal component with three-tier visibility picker
(private/link/public), share link creation with configurable expiration,
clipboard copy, and link revocation. Wire into setup detail page
replacing the static visibility badge with an interactive share button.
Plan: 32-03 (Setup Sharing System - Share Modal UI)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 18:02:41 +02:00
makiolaj and Claude Opus 4.6
e10f0eda3d
feat(33-02): generate migration for market_prices, community_prices tables
...
- CREATE TABLE market_prices with unique(global_item_id, market, currency)
- CREATE TABLE community_prices with unique(global_item_id, user_id, source_type)
- ALTER TABLE items ADD COLUMN price_currency
- ALTER TABLE thread_candidates ADD COLUMN found_price_cents, found_price_currency, found_price_date
- Note: db:push requires running PostgreSQL — apply on deployment
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 18:02:40 +02:00
makiolaj and Claude Opus 4.6
50bc11c7ed
feat(33-01): add currency conversion service with exchange rate caching
...
- Create currency.service.ts with frankfurter.app ECB rate fetching
- 24h in-memory cache with stale-serve fallback on fetch failure
- convertPrice() handles EUR-base cross-currency conversion
- CURRENCY_MARKET_MAP maps currencies to market regions
- 12 unit tests covering conversion, rounding, unknowns, and mapping
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 18:02:06 +02:00
makiolaj and Claude Opus 4.6
298fa6d586
feat(33-01): add market_prices, community_prices tables and currency columns
...
- Add marketPrices table with unique(globalItemId, market, currency) constraint
- Add communityPrices table with unique(globalItemId, userId, sourceType) constraint
- Add priceCurrency column to items table (default EUR)
- Add foundPriceCents, foundPriceCurrency, foundPriceDate to threadCandidates
- Add Zod schemas for market price upsert and community price submission
- Export new types from shared/types.ts
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 18:02:00 +02:00
makiolaj
1d15d4b336
docs(state): record phase 34 context session
2026-04-13 18:00:10 +02:00
makiolaj
1992778ce6
docs(34): capture phase context
2026-04-13 18:00:10 +02:00
makiolaj and Claude Opus 4.6
da159d10b8
feat: add share link service, API routes, and short URL redirect
...
Create share.service.ts with token generation (128-bit base64url),
CRUD operations, validation, and visibility transition side effects.
Add share endpoints under /api/setups/:id/shares, shared access at
/api/shared/:token, and /s/:token short URL redirect.
Plan: 32-02 (Setup Sharing System - Share Link Backend)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 17:59:39 +02:00
makiolaj and Claude Opus 4.6
7a696f39a5
docs(33): create phase plans for currency system
...
6 plans across 3 waves covering market-aware pricing, exchange rates,
community price data, and currency-normalized display.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 17:58:37 +02:00
makiolaj and Claude Opus 4.6
edc9793c2d
feat: migrate setup visibility from boolean to three-tier system
...
Replace isPublic boolean with visibility enum (private/link/public) across
the full stack. Add shares table to schema for future share link support.
Update all services, routes, schemas, hooks, components, and tests.
Plan: 32-01 (Setup Sharing System - Schema Migration)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 17:55:46 +02:00
makiolaj and Claude Opus 4.6
727abf1528
docs(33): add research, validation strategy, and UI design contract
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 17:52:18 +02:00
makiolaj
d928634e57
docs(state): record phase 33 context session
2026-04-13 17:45:50 +02:00
makiolaj
634ac298d1
docs(33): capture phase context
2026-04-13 17:45:45 +02:00
makiolaj and Claude Opus 4.6
338a78122d
docs(32): fix wave assignment — Plan 04 bumped to wave 4
...
Plans 03 and 04 both modify setups/$setupId.tsx. Per wave assignment
rules, file overlap requires sequential execution. Plan 04 now depends
on Plan 03 and runs in Wave 4.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 17:06:39 +02:00
makiolaj and Claude Opus 4.6
81a654085d
docs(32): create phase plans for setup sharing system
...
4 plans in 3 waves:
- Wave 1: Schema migration (isPublic→visibility) + shares table
- Wave 2: Share link service + API routes
- Wave 3: Share modal UI + shared setup viewer
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 17:05:36 +02:00
makiolaj and Claude Opus 4.6
9965e356de
docs(32): add research and validation strategy for setup sharing system
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 16:59:54 +02:00
makiolaj
cb0c1e8c9a
docs(32): UI design contract
2026-04-13 16:59:25 +02:00
makiolaj
49c59fded9
docs(state): record phase 32 context session
2026-04-13 16:51:32 +02:00
makiolaj
6833b90795
docs(32): capture phase context
2026-04-13 16:51:23 +02:00
makiolaj and Claude Opus 4.6
2853477a75
chore: archive v2.2 User Experience Polish milestone
...
CI / ci (push) Successful in 1m15s
CI / e2e (push) Has been skipped
CI / deploy (push) Has been skipped
Phases 28-31 archived to milestones/v2.2-phases/
Requirements and roadmap snapshots archived to milestones/
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
v2.2
2026-04-13 16:00:35 +02:00
makiolaj
92b84d2cd6
docs: capture todo - Auth prompt sign-in should redirect directly to Logto
2026-04-13 15:53:07 +02:00
makiolaj and Claude Opus 4.6
ebf031a62c
fix: cap onboarding to 5 categories with 4 items each
...
CI / ci (push) Successful in 1m15s
CI / e2e (push) Has been skipped
CI / deploy (push) Successful in 14s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 15:23:10 +02:00
makiolaj and Claude Opus 4.6
03e0fe99fa
feat: group onboarding items by category
...
CI / ci (push) Successful in 1m17s
CI / e2e (push) Has been skipped
CI / deploy (push) Successful in 14s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 15:19:02 +02:00
makiolaj and Claude Opus 4.6
adbc13eb15
fix: SelectableItemCard used wrong formatter names, globalItems imageFilename→imageUrl
...
CI / ci (push) Successful in 1m12s
CI / e2e (push) Has been skipped
CI / deploy (push) Successful in 14s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 15:13:23 +02:00
makiolaj and Claude Opus 4.6
2beabe88f9
fix: popular-items query referenced non-existent imageFilename on globalItems
...
CI / ci (push) Successful in 1m17s
CI / e2e (push) Has been skipped
CI / deploy (push) Successful in 16s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 15:07:38 +02:00
makiolaj and Claude Opus 4.6
29f925027c
chore: one-liner fixing script for docker exec
...
CI / ci (push) Successful in 1m15s
CI / e2e (push) Has been skipped
CI / deploy (push) Successful in 15s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 14:58:19 +02:00
makiolaj and Claude Opus 4.6
32fa261ec2
chore: diagnostic and fix script for catalog seeding
...
CI / deploy (push) Has been cancelled
CI / e2e (push) Has been cancelled
CI / ci (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 14:57:27 +02:00
makiolaj and Claude Opus 4.6
9864a09fc1
chore: shell script for nuke-and-reseed (runs inside container)
...
CI / ci (push) Successful in 1m16s
CI / e2e (push) Has been skipped
CI / deploy (push) Successful in 14s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 14:20:03 +02:00
makiolaj and Claude Opus 4.6
c3874d031a
chore: temp script to nuke dev seed user
...
CI / ci (push) Successful in 1m13s
CI / e2e (push) Has been skipped
CI / deploy (push) Successful in 14s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 14:15:54 +02:00
makiolaj
cd55f3c282
fix: seedTags inserts missing tags instead of skipping when any exist
CI / ci (push) Successful in 1m15s
CI / e2e (push) Has been skipped
CI / deploy (push) Successful in 15s
2026-04-13 14:09:28 +02:00
makiolaj
80f4d1d9ae
fix: lint formatting for seed data and item detail page
CI / ci (push) Successful in 1m14s
CI / e2e (push) Has been skipped
CI / deploy (push) Successful in 17s
2026-04-13 14:03:25 +02:00
makiolaj
ba13fa8ded
docs: update roadmap, config, and UAT state
CI / ci (push) Failing after 20s
CI / deploy (push) Has been skipped
CI / e2e (push) Has been skipped
2026-04-13 13:56:56 +02:00
makiolaj
13883ea14d
fix: add hobby tags to catalog seed data for onboarding discovery
2026-04-13 13:48:40 +02:00
makiolaj
bedef04581
test(30): re-test UAT - 3 passed, 1 cosmetic, 3 blocked (catalog seed)
2026-04-13 13:45:47 +02:00
makiolaj
c1177764ef
docs(29-05): add execution summary
2026-04-13 13:42:20 +02:00
makiolaj
ded6bf521e
fix(29-05): add local crop state to ImageUpload for immediate preview
2026-04-13 13:42:06 +02:00