Repository navigation
Release v0.1.0 - #64
Merged
Merged
Conversation
- Read runtime app config for Tamagui custom colors via src/env.ts - Web MMKV shim: stable defaults, cross-hook sync, raw string storage - Web device id is generated once and reused - Use browser confirm for cart replacement on web - Guard StoreCategory deep links and boot splash on missing config - Return to the calling screen after location permission is granted - Replace undefined palette tokens with defined theme tokens - Pass missing env keys to the web build and derive __DEV__ from mode - Fix storage setters dropping values and CI .env overwrites - Add TrueVegan themes to the web CSS theme-name fix
- Move Network edition screens to src/screens/network (NetworkHome, NetworkSearch, NetworkMap, NetworkCategory, NetworkStore, NetworkProduct) and rename routes/tabs - Move marketplace-runtime to src/network/network-runtime; storefront mode is now 'network' - Rename MarketplaceStoreCard to NetworkStoreCard and the i18n namespace to Network - Declare Network deep-link paths once (stores/:storeId, stores/:storeId/products/:productId, stores/:storeId/categories/:categoryId, categories/:categoryId, search, map) - Pin persisted storage scope values with a test so renames cannot orphan data - Replace lint/typecheck:marketplace with lint/typecheck:strict and update CI and README - Remove unused placeholder NetworkHomeScreen, ConfigContext, empty TabBar and ProductBookingPanel, and the stale canAddProductToCart helper
The device was only registered at login, and only if a push token had already been received. Tokens that arrived later (e.g. after granting the Android 13+ notification permission) or rotated were never registered, so those customers got no push notifications. Register whenever the token or the customer changes, and unregister the token on logout so the next customer on the device does not receive the previous customer's pushes.
- Stable screen ids with typed params for overridable screens - Lazy default screens, compiled-in overrides and declarative variants - screenSlot(id) components used by navigators instead of screen imports - Error boundaries fall back to the default screen, then a load-error view - Preload initial screens during boot to avoid a loading frame - storefront.extensions.ts as the brand override entry point - Network store/product shells render the store.home/product.detail slots - ESLint rule and test enforcing the navigator import boundary - Registry, fallback and type tests; docs/extensibility.md
- Register i18n translations lazily instead of at LanguageContext import time; reading storefront config during module initialization crashed web boot through the utils -> use-storefront -> LanguageContext -> utils cycle - Fix Platform import typo in AddNewLocationScreen that threw at module load
- Versioned, zod-validated branding schema (colors, appearance, components, assets, boot, navigation, screen variants) with per-value fallback - Layered resolution: defaults < legacy env keys < storefront.brand.ts < dev preview - Legacy APP_THEME, CUSTOM_COLORS*, STORE_HEADER_*, PRODUCT_CARD_STYLE and navigator env keys mapped into branding; existing profiles resolve unchanged - Themes generated from presets with exact parity to the previous themes, plus Tamagui interaction keys (hover/press/focus, placeholder, color1-12) - WCAG contrast checks; enforced for preview sources, reported for build sources - BrandingProvider owns the color scheme (system/light/dark, migrated from the old key, follows device changes) and registers runtime themes via addTheme when resolved colors differ from the compiled theme - useAppTheme/ThemeContext/getTheme become shims over one shared state - config/default.js presentation keys and screen variant selection read branding - Dev-only local branding preview; docs/branding.md
- QPayPaymentSheet: import Platform - DriverMarker: import haversine from utils/math - StoreRating: fix nRatingChange typo - TabSwitch: import LayoutChangeEvent type - use-customer: import isResource (utils) and storage get - use-fleetbase-data: depend on fleetbase instead of undefined storefront - use-oauth.web: Apple Sign-In is native-only, report unsupported - use-stripe-checkout.web: stub native Stripe functions to return an error - StoreNavigator/TestNavigator: fix focued typo in tabBarLabelStyle - CircleExpandInterpolator: take width/height from layouts.screen - CartItemScreen: drop unused getCartItem import (cart comes from useCart)
- App.tsx: import Platform - ConfigContext: use imported storefrontConfig (useAuth doesn't provide it) - AddNewLocationScreen: fix Platfrom import typo - EditLocationCoordScreen, LocationPickerScreen: import toast - SaveLocationScreen: define theme and loading state; gate button on save in progress - StripeCustomerScreen.web: drop native-only CustomerSheet usage - DriverMarker: declare event refs after useEventBuffer (TDZ fix)
fix: stabilize network edition runtime, web shims, and theming config
refactor: rename Marketplace application concepts to Network
feat: add typed screen registry with compiled-in overrides
feat: add typed branding system with generated themes
fix: keep the push device token registered for the signed-in customer
fix: resolve TS2304 missing-name runtime bugs
Fix undefined-name runtime bugs flagged by tsc (TS2304)
- Register uk.json in localize.js and the default AVAILABLE_LOCALES - Add Ukrainian strings for the Network and ScreenSlot keys and common.goBack - Add the two Mongolian keys missing from mn.json - Test that every locale has the same keys as en.json and is registered
feat: restore marketplace edition
… private repo links The Cart tab tap after the order screen failed intermittently on Android, costing the checkout screenshot. The README and flow README linked the private showcase repo, a 404 for readers of this public one.
…lt phone country; boot logo from brand/, every map uses the configured map type, language list follows AVAILABLE_LOCALES
97900d1 stopped initialising the Facebook SDK without FACEBOOK_APP_ID, but clearSessionData still called LoginManager.logOut() on every sign-in. On Android that throws 'The SDK has not been initialized' and the app crashed right after the verification code.
Meta's login API keeps changing and the option goes unused. Removes the sign-in button, the OAuth provider, the session sign-out, react-native-fbsdk-next (package, yarn.lock, pods), the SDK start-up in AppDelegate, the manifest and Info.plist keys, the FACEBOOK_* env and the CI secrets that wrote them. A store's Facebook page link on its info screen stays.
…e's connectivity Whether a truck takes orders is decided in Storefront by the truck's status (active or inactive). The API's truck online now reports exactly that. The app fell back to vehicle.online, and the store map read vehicle.online directly, so a truck whose driver app or telematics device was offline could not be ordered from. Both now read only the truck's own online.
fix(trucks): a truck is live by its Storefront status, not its vehicle's connectivity
…in place of checkout Every image is one the release capture publishes to fleetbase.io. The checkout screenshot is left out until it shows a deliverable address (and Android gets past checkout).
Storefront nests product and catalog categories up to three levels (Drinks › Coffee › Cold brew); each category carries its parent. - Store page: top-level categories are the tabs; each section loads its products once (the API rolls up the subcategories' products, replacing one query per category) and shows them in headings by subcategory, with chips to jump to a subcategory. A link to any category opens its heading. - Category list: top-level rows with their subcategories as pills; a pill opens that subcategory on the store page. - Search chips list top-level categories only. - Truck menus: tabs by top-level menu category, subcategory headings inside; the trucks map's category tiles are top-level only; truck search also matches the top-level category. Against an API without parents every category is at the top, as before.
feat(categories): nested store and menu categories
…s offers, Offers tab and configurable Network tabs The shop home (network.home variant shop) shows the main store's categories in a grid, live offers, the customer's active orders with a link to their history, the products they order most, bookable services from partner shops and the partner shops. The main store is the member tagged with navigation.network.mainStoreTag. A category opens on its own screen: its products and those under it, subcategory chips, and the offers aimed at it, with offer badges on products and category tiles. navigation.network.tabs sets the Network's tabs, including the new Offers tab.
…at belongs upstream or in brand/
…story link, and All opens every category as a grid
…re placed and a small timeline of their steps
…e tag, trucks view and tab overrides; order line test expects productId
…tive order cards follow their order live The note is saved on the checkout (PUT checkouts/notes) shortly after typing and as the customer goes to pay, so QPay orders, created by QPay's callback, keep it (storefront v0.4.27). Active order cards reload when an order's channel reports a change, when the app comes back and every 45 seconds while an order is active, so steps move on and finished orders leave.
…efresh reloads the orders
…box as feature groups of their own
This was referenced Oct 16, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release v0.1.0
Release branch for the Network edition (marketplace) and the extensibility work. Cut from
main; merging it tagsv0.1.0through the release workflow (#55).Included via #54 (
feature/marketplace-edition→release/v0.1.0)On this branch
0.1.0Before merging