- Allow height prop to be number or string (e.g. '100vh')
- Add computedHeight to properly format CSS height value
- Fixes fullscreen map overlay showing white screen
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add top row with company/team selector dropdown
- Show "Стать участником" link when user has no teams
- Move user name below avatar in profile button
- Add team switching functionality via SwitchTeamDocument mutation
- Remove duplicate team link from user dropdown menu
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- offers/index.vue - list of offers
- offers/new.vue - product selection (excluded from [uuid])
- offers/[uuid].vue - product characteristics form
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Added "Выбрать адрес" button in header that links to /locations page.
Uses search store to display selected location name.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add terminus_schema_id field to GraphQL Product type
- Update GetProducts.graphql to include terminusSchemaId
- Move add-product.vue to offers/new/[uuid].vue
- Restructure offers/new.vue into offers/new/index.vue
- Update navigation to use product UUID route param
- Form loads schema from product's terminus_schema_id
Flow: Offers -> Add -> Select Product -> Fill Characteristics
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Rename schema file to match schema name (Cocoa)
- Add @context for TerminusDB compatibility
- Schema loaded into TerminusDB at admin/optovia
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add viewMode toggle (Список/Карта) to catalog page
- Create CatalogHubsSection with country grouping
- Create CatalogOffersSection with status badges
- Create CatalogSuppliersSection with verification badges
- Create CatalogMapView with left panel tabs (Хабы/Офферы/Компании)
- Create CatalogMapItem for clickable list items with flyTo animation
- Integrate with existing MapboxGlobe component
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Move language switcher from header to user dropdown menu
- Remove descriptive text under section headings in catalog page
- Replace vertical sidebar with horizontal tabs in cabinet layout
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Make update playbook identical to install playbook structure
- Use infisical run for secrets instead of external role
- Remove ansible/roles/odoo directory
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Create ansible role for Odoo with update_modules task
- Use infisical run to inject secrets from environment
- Execute odoo -u modules --stop-after-init inside container
- Restart service after successful update
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add cabinet layout with 1/6 sidebar
- Header: rename "Мои заказы" to "Личный кабинет"
- Add cabinet pages: orders, offers (seller only), new offer
- TeamCreateForm: add team type selection (BUYER/SELLER)
- Sidebar shows "Мои предложения" only for SELLER teams
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add team_type field to Team model with migration
- Add teamType to GraphQL schema (Team type and CreateTeamInput)
- Update GetMe.graphql and CreateTeam.graphql with teamType field
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace Nuxt $fetch with native fetch for TerminusDB GraphQL calls
- Fix TypeScript type errors with NitroFetchRequest
- Add explicit return type for getEndpoint function
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Replace @apply directives with plain CSS - Tailwind v4 requires
@apply to be inside @layer directive
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add placeholder fields to empty Query/Mutation types (GraphQL requires at least one field)
- Remove empty Mutation types where not needed
- Fix kyc endpoint in codegen.ts: /graphql/ -> /graphql/team/
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
All backends now have consistent schemas/ folder with:
- public_schema.py (no auth)
- user_schema.py (ID token)
- team_schema.py (Team Access Token)
Updated:
- teams: added public_schema.py
- kyc: migrated schema.py to schemas/
- exchange: migrated schema.py to schemas/
- orders: migrated schema.py to schemas/
All urls.py now have /graphql/public/, /graphql/user/, /graphql/team/
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Simplify TerminusDB schema to single Cocoa class with 10 properties
- Add terminus_schema_id field to Odoo Product model
- Update FastAPI and GraphQL to expose terminus_schema_id
- Add FormKit for dynamic form generation
- Create useTerminus composable for schema loading and conversion
- Add /dashboard/add-product page with dynamic form rendering
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>