Release notes

Everything new in CGW Token Portal. You are running v0.15.0.

v0.15.0

Current

Flower identification never shows a placeholder result again

Flower identification no longer ever falls back to a placeholder result if AI is briefly unavailable. If a real identification can't be produced right now, you'll see a clear "couldn't identify this plant" message with a Try again button instead — never a guessed answer standing in for a real one. This applies on the web app, the mobile app, and the native iOS/Android app, for both signed-in and guest identification.

Improved
  • Native app: the Identify screen now shows the plant's name, scientific name, confidence, and alternative matches in a readable layout, instead of a raw technical result.
Fixed
  • Flower identification (signed-in, guest, and native app) no longer ever returns a placeholder result when the AI service is unavailable. It now shows a clear, friendly message and a working Try again button instead.
  • A guest's daily free identification is no longer spent when identification is unavailable — the attempt is refunded automatically.
Developer
  • Removed the last production code path that could serve a fabricated identification result; the mock provider used during development now exists only in the test suite.
  • Added automated tests that scan the mobile and native app source for the old placeholder-result copy, so it can't silently come back.
  • Rewrote the AI/identification documentation to match this behavior.

v0.14.0

Fixed: the Whitepaper page failing to load

Fixed a bug where the Token Portal's Whitepaper page could fail to load with a server error. The page's content is now built directly into the app instead of being fetched from disk when someone visits the page, which is more reliable and loads faster.

Fixed
  • Token Portal: the Whitepaper page (/whitepaper) no longer intermittently fails to load with a server error. Its content is now compiled into the app at build time instead of being read from a file at request time, which also makes the page load slightly faster.

v0.13.0

Fixed: flower identification failing with a connection error

Fixed a bug where identifying a flower could fail with "We couldn't connect to CoinGarden right now," even though the identification itself was actually succeeding — the app was giving up and showing an error before a normal, slightly-slower AI response had a chance to come back.

Fixed
  • Identifying a flower (both signed-in and guest) no longer fails with a connection error for a normal-speed AI response. The app's own internal request timeout was shorter than the time a real identification can legitimately take, so a genuinely successful result was sometimes thrown away and shown to the user as a failure.

v0.12.0

Solana program compile fixes, and a vault-tracking bug fix

Fixed three real compile bugs in the on-chain vesting and rewards programs caused by an untracked dependency version, and fixed a bug that would have let two of CGW's six vaults silently share one tracked address.

Fixed
  • The on-chain cgw-vesting and cgw-rewards programs failed to compile against the anchor-lang library version that was actually being resolved (1.1.2, not the intended 1.0.2 — no lockfile had ever been committed for this workspace). Fixed the three resulting API breaks and committed a lockfile so this cannot silently happen again.
  • CGW's deployment tracking previously had only one address slot for two distinct vaults (the Liquidity Vault and the Community Vault, each a separate 5% allocation per the token specification). Each now has its own tracked slot, so a real deployment can never have one vault's balance read as if it were the other's.
Developer
  • Verified the on-chain programs compile and lint cleanly (cargo check, cargo clippy with warnings-as-errors) in this environment; full on-chain build/deploy remains blocked by this sandbox's available disk space, tracked separately.

v0.11.0

Google account linking on the Token Portal, and a wallet connection fix

The Token Portal's profile page can now actually link a Google account to your wallet as an optional backup identity, and a bug that made the wallet-connect flow fail with "No wallet connected." right after a real wallet had connected is fixed.

New
  • Token Portal: the profile page's Google section now works — sign in with Google, then link it to your wallet profile as an optional backup identity, or unlink it later. Wallet sign-in remains fully independent and never requires Google.
Fixed
  • Token Portal: connecting a wallet in the "Connect a wallet" modal no longer incorrectly shows "No wallet connected." immediately after the wallet extension has genuinely connected.

v0.10.0

Cleaner UI, a smarter AI model picker, and the groundwork for native apps

A round of UI and copy fixes across the Admin Center and Token Portal, a rebuilt mobile About page that actually describes the current app, a searchable model picker for choosing which AI model powers each assistant, and the first working scaffold of native iOS/Android apps — not yet available to install, but the sign-in and core screens now run end to end against CoinGarden's real servers.

New
  • Admin Center: choosing which AI model powers an assistant is now a searchable list grouped by whether a model is compatible and verified, needs verification, or isn't compatible — instead of one long dropdown with no explanation
  • Mobile app: the About page was rewritten to describe what the app actually does today (plant care, identification, badges, the Token Portal) instead of outdated feature descriptions
  • The first working version of CoinGarden's native iOS/Android apps exists as an internal engineering build: sign in with Google, see your gardens and flowers, identify a plant with the camera. It is not yet published to the App Store or Play Store.
Improved
  • Mobile app: your profile page now shows your real garden, flower, and badge counts instead of a leftover placeholder panel
  • Admin Center and Token Portal: several layout and copy fixes, including a Token Portal diagram that could overlap on narrower screens
Security
  • Closed a gap where pinning an AI model to an assistant did not check that the model actually supported what that assistant needs (for example, image understanding for plant identification) the same way the main configuration screen already did
Developer
  • CoinGarden's servers now support a real, revocable sign-in session for native apps, separate from the website's sign-in system, since a phone app has no server of its own to hold a shared secret the way the website does

v0.9.0

Live Solana Operations in the Admin Center

The Admin Center's Token pages now read CGW's real status directly from Solana instead of a static placeholder, and refresh themselves automatically while you have them open — showing the truth as it stands today: CGW is approved for implementation but not yet deployed on any cluster.

New
  • Admin Center Token pages (Overview, Holders, Treasury, Security, Transactions) now read CGW's live deployment state, mint details, supply, vault balances and mint/freeze authorities directly from Solana over a read-only, server-side RPC connection — never from the browser
  • Every Token page now auto-refreshes while open (5s on token pages, 10-15s on the global shell), pausing while the tab is hidden, catching up immediately on focus, and backing off automatically after repeated failed reads — labelled honestly as polling, never as a live socket connection it isn't
  • A clear five-state deployment reading (not deployed, configured but unreachable, configured but the account is missing, deployed and healthy, or deployed with a mismatch against the approved specification) replaces the old always-false placeholder
Improved
  • Holder and transaction figures are now always labelled by what was actually read — "Top token accounts" rather than an implied full holder list, and an honest "unavailable from configured RPC" rather than a fabricated zero — and never guess a value the read-only RPC connection cannot actually confirm
  • The Token Portal link is now derived from configuration instead of a hardcoded local address
  • Token Overview language now consistently distinguishes an approved-but-not-yet-built decision from an actually deployed one, replacing several places that still read like an open design proposal
Security
  • Solana RPC connection details and provider credentials are confirmed, by an automated test, to never appear in the Admin Center's browser bundle, its API responses, or its logs

v0.8.2

A friendlier connection error on Identify

If plant identification can't reach CoinGarden's servers, you'll now see a plain-language message with a Try again button — never a raw error code — and the app never blocks the photo form while it quietly checks your free daily count in the background.

Improved
  • A failed connection to CoinGarden's servers is now recorded with a short reference code you can quote to support, and shows up in the operations team's error monitoring — previously it was invisible outside that failure
Fixed
  • The Identify page could show a raw internal error code ("upstream_unavailable") if a photo identification briefly couldn't reach CoinGarden's servers — replaced with plain-language copy and a Try again button that resubmits the same photo
  • That background connection is now retried once automatically before giving up, for the read-only checks (like your free daily count) where a retry can't cause any duplicate action

v0.8.1

A navigation bar that responds to scrolling

The mobile app's top and bottom navigation now morph as you scroll — a compact floating bar at the top of a page, smoothly widening into a full sticky bar as you read further, and shrinking back the moment you return to the top.

Improved
  • Mobile app: the top header and bottom navigation now animate between a compact floating card (top of page) and a wide, edge-attached bar (once you've scrolled), instead of staying floating everywhere — matching the app's original navigation feel
  • The transition only ever triggers on a real, deliberate scroll — a small buffer zone around the switch point stops it flickering between the two states
  • Every animated element still respects a system-level request for reduced motion, switching states instantly instead of animating

v0.8.0

Contribution Badges

A new Achievements page recognizes real activity — membership milestones, plant contributions, care streaks, identifications, and community participation — with clear progress toward what's next. Feature a few badges on your profile, and see one next to a creator's name on their shared flowers.

New
  • Achievements page (/badges): every badge you've earned and every badge still open, grouped by Membership, Plant Contributions, Plant Care, Identification, Community and Special, each showing real progress toward the next milestone — never a fabricated percentage
  • Membership badges award automatically by account age, from joining through six-plus years
  • Plant Contribution badges award at real save milestones (1 through 2,000 flowers saved), not raw AI identification attempts
  • Plant Care badges reward logged care events and genuine 30- and 100-day care streaks
  • Identification badges reward confirmed identifications, not every AI call
  • Community badges reward your first shared flower and real appreciation received from others
  • Special badges (System Guardian, Harmony Keeper, Community Beacon, Blossom Benefactor, Rare Plant Curator) are hand-awarded by CoinGarden and can't be earned automatically
  • A badge detail page explains exactly what's required and how close you are
  • Feature up to five earned badges on your profile — you choose which ones are visible, and unfeatured badges stay private
  • A featured badge now appears next to a creator's name on their public flower posts
  • A polished, reduced-motion-aware “Achievement unlocked” notification appears once per badge, whether you earned it yourself or someone else's like earned it for you
  • Admin Center gained Ecosystem → Badges: view every badge and how many people hold it, enable or disable a badge, assign or revoke a Special badge with a required reason, and run a one-time reconciliation that awards every existing account every badge it already qualifies for — not just the newest one
Security
  • Only an administrator can assign or revoke a Special badge, and every assignment, revocation, enable/disable toggle and reconciliation run is written to the audit log with a reason
  • Automatic badges have no admin override path that bypasses the real evaluation — an administrator can only enable/disable the badge itself, never hand-grant or hand-revoke an automatically-earned one
Developer
  • Badge catalog is fully data-driven (metric + threshold read from the database), so a new badge never requires a code change
  • Badge progress is always computed live from the same source tables the rest of the product trusts (flowers, care_events, identifications, flower_posts, flower_post_likes) — no separate progress table to drift out of sync
  • Unlock notifications are delivered by polling an unseen/acked flag rather than a push channel, so a badge earned by your own action, someone else's action (a like), or an admin reconciliation run all surface the same way

v0.7.6

Fixed the mobile app's share preview image being blocked from crawlers

The mobile app's new share preview image (0.7.5) was itself unreachable by Facebook, X and other link-unfurling crawlers — they were redirected to the login page instead of seeing the image, because those crawlers never sign in. Fixed.

Fixed
  • Mobile app: the opengraph-image and twitter-image routes were not on the public-route allowlist, so the sign-in-required default for personal pages redirected every crawler request to the login page instead of serving the image — confirmed live (HTTP 307) and fixed by adding both routes to the same allowlist that already covers robots.txt and sitemap.xml

v0.7.5

Fixed a deployment failure in the 0.7.4 share-image release

The previous release's share-preview images built and worked locally, but failed to deploy on the website, mobile app and token portal because of a Cloudflare-specific incompatibility. Fixed, and the images are now live.

Fixed
  • The website, mobile app and token portal failed to deploy after 0.7.4 shipped — the preview-image pages declared a runtime setting the Cloudflare build step rejects outright. Removed the setting (each app already runs in that runtime regardless of the declaration), confirmed against the real deployment build rather than only the local one this time

v0.7.4

Real share previews for the website, mobile app and token portal

Sharing a CoinGarden link on Facebook, X or anywhere else previously showed no image and a Facebook warning about a missing og:image. Every public app now generates a branded preview image, and the mobile app gained the social title/description it never had.

New
  • Branded Open Graph and Twitter/X preview images for the marketing site, mobile app and token portal — each in that app's own colors, generated on the fly rather than a static file to keep in sync
Fixed
  • The mobile app had no social preview metadata at all (no og:title, og:description, or og:image) — a shared Discover or flower-post link showed a bare, generic preview. It now carries the app's name, description and the new preview image
  • The marketing site's Twitter Card type was set to a small "summary" layout, which doesn't display a large image even when one is provided — corrected to "summary_large_image" now that a real image exists

v0.7.3

Fixed the Discover feed for signed-in users

Signed-in users saw "We couldn't load community flowers" on every visit to Discover — a broken link between the app and the personalized-picks feature, not a real outage. Fixed, so signed-in users now see their picks, or the community's popular flowers if there aren't any yet.

Fixed
  • Discover feed: signed-in users no longer see a permanent "couldn't load" error — the personalized feed now loads correctly, falling back to the community's popular flowers when there isn't a personalized pick yet

v0.7.2

Fixed the user-edit crash for real this time

The previous fix for the user-edit page crash didn't work — saving still crashed the page. This one does: the redirect after saving now matches the exact pattern already proven to work everywhere else in the Admin Center.

Fixed
  • Admin Center: changing a user's role, status, or display name no longer crashes the page after saving — this time confirmed by re-testing the exact failing action live, not just by a clean build

v0.7.1

Fixed a crash when saving a user edit in the Admin Center

Saving a role, status, or display name change on a user's account page could crash the page instead of showing the result. The save itself was never the problem — the page just didn't reload correctly afterward. Fixed.

Fixed
  • Admin Center: changing a user's role, status, or display name no longer crashes the page after saving — the confirmation now shows correctly

v0.7.0

Admin user administration, and two real bugs fixed

Administrators can now edit a display name, change a role, and enable or disable an account directly from the Admin Center, with every change written to the audit log. The audit log itself is fixed — it was never actually loading — and the Health page's version-mismatch warning is fixed to stop false-alarming while a deployment is still rolling out.

New
  • Admin Center: a user's account page now supports editing their public display name, changing their role (User / Moderator / Admin) and enabling or disabling the account — enforced server-side, with the same last-admin protection and self-disable confirmation the product has always had
  • Health page now shows a Service / Expected version / Deployed version / Commit / Status table, so a genuine deployment gap is visible at a glance instead of buried in a version list
Fixed
  • The Admin Center's audit log page always failed with “response this console did not recognise” — the API route never actually returned the paginated shape the page required. It now does, and the page loads real entries
  • The Health page's “version mismatch” warning fired constantly and incorrectly, because the API's own self-check reported a version literal that was never updated as releases shipped. It now reads the same shared version every other check does, and the warning only fires once a mismatch has genuinely outlasted a normal deployment, not while one is still rolling out
  • A stray, unreachable status endpoint on the API still described the pre-migration blockchain; corrected while in the same file for the version fix
Security
  • Every user-administration change (display name, role, status) is written to the audit log with an outcome and a correlation id, so it can be traced back to the exact request that made it
Developer
  • The audit log gained real server-side pagination and outcome tracking (`result`, `correlation_id`) instead of an unbounded, unpaginated list
  • Health checks now record a build commit when a service's health payload reports one, laying the groundwork for the new version table

v0.6.0

A smarter Discover feed, and fewer dead ends

The Discover feed now gets a daily AI-curated pick alongside its popular flowers, with a short description on every card. Identifying a plant is clearer end to end, and a handful of small but real bugs — a clipped “Remind me” button, a confusing feed error — are fixed.

New
  • The Discover feed's homepage gets a daily “Today’s Garden Pick,” curated once a day by CoinGarden AI from the community's popular flowers — with a plain, honest fallback to the popular-flowers order whenever AI curation isn't available
  • Every shared flower card now shows a short description drawn from the plant catalog
  • Identifying a plant now offers separate “Take Photo” and “Choose from Gallery” actions instead of one ambiguous button
  • A plant CoinGarden doesn't recognize yet no longer dead-ends — tapping it now searches the catalog for a match, or opens manual search pre-filled with what was suggested
Improved
  • Identification results show a clearer selected state — the whole card is tappable, with a check mark
  • Uploaded photos are now verified as real image files rather than trusted by file extension; an unsupported format like HEIC now says so plainly instead of failing silently
Fixed
  • The “Remind me” button on a flower's care recommendations no longer gets squeezed into an unreadable sliver on narrow phone screens
  • The Discover feed no longer shows “couldn’t load” and “nobody has posted yet” at the same time — a failed connection and an empty community are different situations, and the feed now says which one is actually happening, with a working “Try again”
Developer
  • Search-engine metadata corrected across every CoinGarden application — canonical links, sitemaps and robots.txt now point at the real deployed CoinGarden addresses rather than unrelated domains that happened to already be live
  • The Admin Center's private pages were confirmed fully excluded from search indexing in production

v0.5.0

A real plant catalog

Searching for a plant by common name now works the way it should — including “rose.” The catalog grew from about twenty houseplants to hundreds of real species, genera and families, with old scientific names and common-name variants all finding the right result.

New
  • The plant catalog grew from ~20 hand-picked houseplants to a real taxonomy of roughly 440 species, genera and families, covering houseplants, garden flowers, roses, orchids, succulents and cacti, common trees and shrubs, herbs, vegetables and fruit
  • Searching an old or alternate scientific name now finds the right, currently-accepted species
  • Searching a genus name (e.g. “Rosa”, “Hibiscus”, “Monstera”) surfaces every species CoinGarden knows in that genus
  • Typo-tolerant search for common plant names
  • The Admin Center gained a Plant Catalog page: coverage statistics, where each entry's data came from, and which searches are turning up nothing — so gaps in the catalog are visible instead of silent
Improved
  • AI plant identification is more honest when it's only confident about the genus, not the exact species — it now says so instead of guessing a specific species
  • The “Search the plant catalog” screen explains what to type before you start, and suggests trying a broader term instead of just saying nothing matched
Fixed
  • Searching “Rose” (and many other common names) in the plant catalog no longer returns “No matching species found” — the catalog was missing the data in production, not just missing the search logic

v0.4.0

Discover flowers together

CoinGarden opens up: browse the community's flowers and identify up to five plants a day without an account, share your own flowers when you choose to, and get an AI-personalized discovery feed when signed in.

New
  • A public Flower Discovery Feed on the Dashboard — the community's most-liked shared flowers, no account needed
  • Identify up to five plants a day as a guest; your free limit resets automatically every day
  • Share a flower to the community when you choose to — a clear confirmation shows exactly what becomes public, and you can unpublish at any time
  • Like flowers you love (sign-in required) and see what the community loves
  • Signed-in users get a personalized feed with short AI Garden Notes, grounded in the plant catalog
  • A public display name for sharing — until you pick one you appear as “CoinGardener”, never your Google name or email
  • My Gardens: your personal plant-care home — flowers, gardens, care due and reminders — moved from the Dashboard with a new summary
Improved
  • Bottom navigation now adapts to you: Discover, Identify, My Gardens and Profile when signed in; Discover, Identify, Home and Sign in as a guest
  • The sign-in page explains what an account actually adds — browsing and daily identifications stay free without one
Security
  • Your private flowers, gardens, notes, care history and reminders never appear publicly — sharing copies only the fields you approve, as a snapshot
  • The guest identification limit is enforced on the server against an anonymous, hashed visitor id — never an IP address or email
  • Like counts are computed on the server with a one-like-per-person guarantee in the database itself

v0.3.0

Every AI agent, working

All twelve CoinGarden AI agents now have real implementations, choose their own model on cost and capability, and run on a schedule.

New
  • All twelve AI agents are implemented and running: chat, CGW monitoring, daily system review, mobile insights, security triage, plant data quality, product insights, cost optimisation, release quality and CGW document validation
  • Agents choose their own model automatically — the cheapest one whose capabilities are verified and which passes that agent's acceptance test
  • Scheduled agents now actually run, on a fifteen-minute dispatcher with at-most-once delivery
  • A review queue for results that warrant a person's attention
  • A daily AI digest on the Admin Center homepage, built from real runs
  • Run any analytical agent on demand, with its estimated cost shown before you press the button
Improved
  • Every agent computes its figures in SQL and asks a model only to interpret them, which is both cheaper and harder to get wrong
  • Reports are scored against the evidence they were given, so a figure the model invented is flagged rather than published
  • Model capability checks no longer report a text-only model as unable to produce structured output
  • Model pricing is now known for OpenAI models, so cost comparisons are real rather than blank
Security
  • The chat assistant can only ever read the data of the person it is talking to, enforced in code rather than by instruction
  • CGW monitoring is read-only by construction: no signing key exists and no write path is provided

v0.2.0

AI Control Center and platform releases

Adds centralized AI provider management, improves flower recognition, and introduces in-app release notes with update notifications.

New
  • AI Control Center for managing OpenAI and Anthropic connections in one place
  • Flower recognition now runs through a configurable AI agent, with provenance showing which model produced each suggestion
  • Release notes at /changelog on every CoinGarden application
  • In-app notification when a newer version has been deployed
  • Install CoinGarden to your home screen from the mobile app
Improved
  • Recognition results now carry a validation score and can be corrected by you at any time
  • Administrators can compare models by accuracy, latency and cost before switching
  • Every application footer now shows the version you are running
Fixed
  • The Admin Center overview no longer fails to load when recent errors are present
  • Admin AI pages now lay out correctly on narrow screens
Security
  • AI provider keys are stored encrypted and can never be read back out of the system
Developer
  • Database migrations now apply automatically on deployment
  • Continuous integration runs the full test suite

v0.1.1

Admin & Operations Center

Introduces the private operations console with service health, incidents, error monitoring and product analytics.

New
  • Admin & Operations Center with live service health and incident history
  • Centralized error monitoring with grouped exceptions
  • User and product analytics
Improved
  • Plant care, gardens and reminders now persist to the CoinGarden API rather than your browser

v0.1.0

Foundation

The first CoinGarden.World release: gardens, flowers, plant care and the CGW token portal.

New
  • Create gardens and add flowers with photo identification
  • Plant care reminders and care history
  • CGW Token Portal with the project's published tokenomics
  • Sign in with Google across every CoinGarden application