Skip to main content

What's Changed

0.12.1

- perf: drop aws service/s3 SDK, use signer/v4 directly (22 MB → 16 MB)

0.12.0

- feat: add Firebase Analytics for web and Flutter - docs: remove stale brainstorm design.md from drsmedchoice and flutter-migration PRDs

0.11.4

- docs: add Caddyfile old-entry cleanup step to rename runbook

0.11.3

- chore: rename medtrade to drsmedchoice

0.11.2

- fix: usability improvements from UI critique

0.11.1

- fix: disable payment gate on web and mobile

0.11.0

- feat: redesign search bar and add 'or' divider in location popup - feat: add page indicator to photo carousel when multiple images - fix: include seller name in listing detail API response - feat: format all currency displays as USD with dollar sign and commas

0.10.0

- fix: seed zipcode field with current value in location dialog - feat: rename bottom nav to Listings and fix radius slider in location sheet - style: remove used medical equipment label from header - fix: resolve image URLs in listing detail photoUrls - refactor: move zipcode entry to bottom sheet popup with GPS option - fix: add missing colorScheme variable in _buildManualEntryView

0.9.0

- refactor: remove redundant button style overrides in PermissionRationale - feat: add shimmer animation to skeleton loading widgets - fix: use value instead of initialValue on DropdownButtonFormField - refactor: make photo thumbnails responsive with LayoutBuilder - refactor: replace hard-coded fontSize 12 with context.textTokens.overline - fix: replace Colors.white with semantic color tokens (cs.onPrimary, cs.onError) - refactor: replace hard-coded SizedBox/EdgeInsets with AppSpacing constants - refactor: replace ref.invalidate() with delta-fetch and notifier refresh methods - feat: add Semantics wrappers to ListingCard, ThreadItem, StepIndicator, _PricingCard

0.8.0

- feat: add IP geolocation fallback for mobile search, matching web app scheme - fix: use push instead of go for listing detail navigation - fix: allow unauthenticated listing detail and resolve image URLs in mobile app

0.7.2

- fix: allow unauthenticated access to listings search API - fix: downgrade Gradle to 8.13 to resolve classpath-snapshot build failure - chore: upgrade Flutter dependencies

0.7.1

- fix: use ref.watch for _isAuthed/_isOwner reactivity in listing detail - fix: update Flutter tests to match current production design - docs: add todo.txt with pre-existing test failures to investigate - chore: upgrade Flutter dependencies to latest major versions

0.7.0

- feat: add changelog API and mobile changelog screen - feat: add PUT /api/users/me/name and mobile edit-name UI - feat: add condition filter to search API and mobile UI

0.6.0

- feat: unify on Stripe hosted Checkout for web and mobile - docs: add navigation section and code-map.md reference to AGENTS.md - docs: add code map for AI agent semantic navigation - docs: full audit fix — OCR stack, JWT spec, Go version, pricing, remove docker/frontend-mvp - feat: edit listing API and mobile screen, remove interactive map - feat: search UX with ZIP lookup, map toggle, and responsive listing card - feat: listing creation step indicator and token typography - feat: adopt shared loading/error/empty states in screens - feat: guest browsing with auth gate and routing - feat: design system tokens and shared widgets - chore: add Android network security config and run-android target - refactor: replace google_maps_flutter with flutter_map (OpenStreetMap) - fix: wire camera permission state and add Semantics labels for accessibility - refactor: unify brand color and replace hard-coded condition colors with theme tokens - chore: gitignore kotlin sessions and untrack flutter metadata - refactor: replace on-device ML Kit OCR with server-side AI extraction

0.5.0

- chore: track internal/data/changelog.go - chore: gitignore internal/data/changelog.json - feat: hide listings nav link when logged out, add back-to-listings on detail page

0.4.0

- refactor: move photo upload above text fields in create listing form - refactor: replace tesseract OCR fallback with Anthropic vision client, add title extraction - style: increase web listing thumbnail previews to w-36 h-36 (144px) - fix: register /listings/new routes before /listings/:id to prevent route shadowing - feat: increase thumbnail preview size in create listing flow

0.3.0

- fix: interpolate Go values into Alpine x-data attributes in chat and listing detail templates - fix: auto-scroll chat to bottom on load and after sending message - fix: security audit — 9 critical, 19 medium, 5 low findings - fix: redirect to listings on logout, redirect to login for unauthed protected pages - feat: make listings and detail pages public, 404 protected pages when logged out

0.2.0

- fix: skip empty/garbage fields in OCR description prefill - feat: add OCR status feedback and per-route auth middleware - fix: enable session auth for OCR endpoint used by web UI - feat: improve OCR parser for equipment labels and fix endpoint path - chore: update changelog with releases 0.1.0 and 0.1.1

0.1.1

- fix: make release script survive grep no-match on HEAD tag check

0.1.0

- feat: delete existing photos when editing listing - fix: evaluate Go expressions in Alpine x-data for edit listing form - fix(web): hide file input and remove count text in listing forms - fix: replace native file input label with reactive x-text for accurate file count - fix: dispatch change event on file input after removal to update label - fix: use data URLs for image previews to avoid dark boxes from blob URLs - feat: client-side image resize before upload - feat: add image preview thumbnails on create listing form - feat: resize uploaded listing images to 1600px max + JPEG q85 - refactor: move changelog links into info icon next to app name - fix: make ps to use HEAD instead of main for branch agnostic push - chore: update changelog with release 0.0.13

0.0.13

- chore: inline commit lists into release body at creation time - chore: include fetch-releases in make dev target - chore: disable major version bump in create-release during pre-production - feat: use conventional commits for semantic version bumping in create-release - refactor: add reconstruct-releases script with idempotent semver releases - feat: add changelog page with embedded GH releases

0.0.12

- feat: add storage abstraction with S3/local fallback - feat: add local FS storage backend so uploaded images render in dev - fix: resolve create listing form rendering by stripping Alpine x-model bindings - fix: remove stripe gating from web create listing flow, skip pricing step - feat: add 33312 seed listings with multiple images, spread across test users

0.0.11

- feat: add light/dark mode toggle to login screen - fix: resolve private IPs via public IP fallback, add geolocation logging - fix: dark mode text color on login screen title - fix: sync tempZip after IP/browser geo resolve so location button updates - fix: swap automatic browser geo prompt for silent IP geolocation - feat: location resolution priority for listings search - fix: update footer text color to gray-600, expand AGENTS.md commands - fix: add title attrs on truncated text, landscape tweaks, remove accent stripe - fix: add root route redirect to /listings - fix: demo env deployment — static assets, DB readonly, CGO-free migrations - feat: add deployment scripts for demo and production environments - fix: consolidate geocoding into LookupAddress with two-step resolution for accurate city names - feat: add zip geocode endpoint and auto city resolution for search

0.0.10

- feat: redesign search UI with location modal, idempotent seed upserts, chat back-link, SSE guard - fix: add quarter field to Nominatim address parsing for accurate neighborhood names like Long Island City - fix: prefer suburb/neighbourhood over city in Nominatim geocode for accurate neighborhood names - polish: my listings page interaction states, hover shadows, focus rings, a11y - fix: UI clarify and harden across web app pages

0.0.9

- feat: add compliance enforcement for Class III device filter, disclaimers, listing reporting, and seller self-certification - feat: expand seed listing images to 5 each with unique picsum URLs - polish: touch targets, preconnect CDN, aria-hidden on decorative SVGs - fix: memory leaks, alt text, aria-live, a11y hardening - refactor: remove SSE real-time chat from messages page - fix: CSP compliance for inline scripts, improve color contrast across templates - polish: detail page interaction states, touch targets, focus rings, dark mode contrast - docs: update env vars, add simplified-pricing, revise OCR requirements - fix: update OCR to extract make/model/serial/year into description, fix proposal inconsistencies - feat: real medical equipment images from Wikimedia Commons + dedup listings on re-seed - docs: clarify web app refers to Go templ SSR not Flutter - refactor: remove web target code from flutter app

0.0.8

- feat: preserve search params in URL for bookmarking - fix: search location button trigger and zip-only initial load - fix: add comma grouping to formatPrice, use templ.JSONScript for JSON-LD - chore: add default Flutter widget test - feat: add US zip regex to forward geocode, clean up geocode - docs: update README and AGENTS.md for web stack, seed command - feat: add seed data command for dev environments

0.0.7

- refactor: remove make/model/year/serial_number from listings - feat: persist sessions to SQLite - chore: add *_templ.go and todo.txt to .gitignore - refactor: extract inline Alpine x-data to app.js, polish lazy loading, login bg, flash dismiss - style: responsive images, auto-fit grids, spacing rhythm, semantic z-index - style: replace hardcoded spacing with tokens, add visual hierarchy and section rhythm - style: add strategic color — dark condition badges, brand tokens, tinted neutrals - fix: harden server templates for production edge cases - feat: add RepaintBoundary around map, Semantics labels for photo carousel and search field

0.0.6

- feat: add text scaling support, scroll view, and MediaQuery.sizeOf for accessibility - fix: add color-blind accessible condition badges, fix pricing card radio logic - feat: replace Colors.blue seed with branded teal, add TextTokens theme extension - feat: add responsive breakpoints, NavigationRail for tablets, fluid map/carousel heights - feat: add dark mode toggle button to nav - chore: update todo.txt - docs: add auto-commit convention to AGENTS.md - refactor: remove make/model/year/serial fields from listing forms - feat: add forward geocoding and zip-based search; remove make/model/year/serial fields - feat: add dark mode class support across all templates - chore: add Go and Flutter build artifacts to .gitignore - feat: add theme switcher in profile screen - feat: add dark mode support across app

0.0.5

- feat: add listing location reverse geocoding, dev login, account pages, per-listing payments, and OCR pipeline - chore: add tailwindcss dependency and ignore node_modules - feat: per-listing payment verification and Stripe subscription sync

0.0.4

- feat: simplified pricing, drop user_type, add per-listing payment + Stripe subscription checkout - fix: eliminate modulo bias in randomString and guard production API_URL - feat: add refresh token rotation with 15min access / 30d refresh

0.0.3

- feat: complete flutter migration — chat, profile, FCM, permissions; remove React Native client - feat: flutter migration phase 2-3 — listings, search, detail, create listing wizard, OCR, payment, offline queue - feat: add web app with server-side templates, session auth, and SSE chat - chore: add Go binary, IDE, and OS entries to gitignore - feat: add makefile frontend targets, google oauth env vars, and expo auth config

0.0.2

- feat: add frontend-mvp with expo client and backend api gaps - refactor: replace google vision with openai-compatible llm for ocr extraction - feat: initial go backend with sqlc, golang-migrate, and s3-compatible storage - docs: use haversine in go with performance logging, spatiaLite migration path - docs: replace websocket chat with fcm push notifications

0.0.1

- docs: add medtrade design doc