Vera sees your whole closet, outfits update themselves when the rules change, and other fixes that had been hiding for weeks

A long session. Fourteen changes to the app, one change to the eBay integration, and one fix to the home-screen icon. Four of those changes were latent bugs -- things that looked like they were working but weren't. Here's what's different.

AI Shopper now sees your whole closet, not just what's clean

AI Shopper was recommending items you already own. The cause: the list of your wardrobe that got sent to Vera filtered out anything currently in your laundry basket or seasonal storage. So if your olive chinos were in the wash, Vera thought you didn't own any olive chinos and suggested buying more. If your winter coat was stored for summer, Vera would tell you to buy a winter coat. Now Vera sees every item you own, with a note next to anything temporarily unavailable ("currently in wash" or "currently in seasonal storage"). She treats them as owned and won't recommend duplicates.

Shorts blocked on smart casual weekdays

If your dress code is set to smart casual or business, Vera was still suggesting shorts on weekdays when the weather allowed it. The weekday dress code filter blocked graphic tees and band tees, but nothing was stopping her from pairing a collared shirt with shorts and calling it smart casual. Fixed -- shorts, joggers, sweatpants, and athletic pants are now blocked on weekdays when your dress code is smart casual or above. Applies across every outfit builder (Today's Look, Plan My Week, Tomorrow's Look, Surprise Me).

Tomorrow's Look was quietly keeping tees you didn't want

A filter in Tomorrow's Look was meant to prefer collared shirts over tees on weekdays when you have a smart casual dress code. The logic was inverted: it was keeping the tee and dropping the collared shirt. Every day this ran, you'd get a tee exactly when you didn't want one. Fixed -- now the collared shirt wins when one is available.

Outfits update themselves when the rules change

If you opened the app and Today's or Tomorrow's outfit was already saved from yesterday, it would show that saved outfit -- even if the rules behind it had changed. For example: you add a "no shorts on weekdays" rule in the evening, and Monday morning your Tomorrow's Look still shows the shorts outfit it picked the day before. Now Tomorrow's Look and any unconfirmed outfit check themselves on every page load. If the stored outfit violates a current rule -- wrong formality combination, tee on a smart casual weekday, shorts when they're no longer allowed -- it's discarded and Vera builds a fresh one. You'll see the new rules take effect immediately instead of having to manually reshuffle.

Tomorrow's Look now uses tomorrow's weather, not today's

The temperature filters in Tomorrow's Look were reading today's current temperature instead of tomorrow's forecast high. In Chicago spring, that's a meaningful difference -- today 38°F, tomorrow 68°F. The filter that kept sandals out of the outfit was using the wrong number. Fixed -- Tomorrow's Look now pulls the actual forecast for tomorrow's date before deciding what's allowed.

Plan My Week catches up to the other builders

Several filters that existed in Today's Look didn't exist in Plan My Week: the filter that keeps tees out of cold weather, the one that keeps linen out of cold weather, the one that keeps shorts out when it's below 60°F. Your weekly plan would have shorts on a 34°F Tuesday. All four temperature filters are now running in Plan My Week and Tomorrow's Look, matched across every builder.

Vera Says no longer goes missing from the weekly plan

When you ran Plan My Week, Vera's short explanation for each day's outfit sometimes wouldn't appear. The Haiku call that generated the explanation was being kicked off without waiting for its response -- the outfit got saved before Vera finished speaking. Fixed -- the explanation now waits and saves with each day's outfit.

Weather data consistency across builders

Different outfit builders were reading weather from different places. Today's Look used the current temperature from open-meteo; Plan My Week and Tomorrow's Look used daily forecast highs. Sometimes those two sources disagreed by 20°F or more. Vera was getting different temperatures in different contexts for the same physical moment. Every builder now reads from the correct source for the day it's building -- Today's Look uses the current temp, Plan My Week uses each day's forecast high, and Tomorrow's Look uses tomorrow's forecast high.

Unworn-item tracking works correctly again

Several features that track how long it's been since you wore something -- the "unworn 30+ days" dashboard alert, the Wardrobe Audit, and the candidate list sent to Vera -- were reading a stale cached field instead of calculating the actual days since the item was last worn. If that cached field hadn't been updated, the tracker would show wrong numbers, sometimes for items you'd worn just yesterday. Fixed -- every tracker now computes days-since-worn fresh from the actual last-worn date.

Rules no longer multiply

When you told Vera about a new style rule in chat, or pinned a feedback comment as a permanent rule, she sometimes saved duplicates. You could end up with five copies of "no t-shirts on weekdays" in your rules list without realizing it. Now Vera checks if a rule already exists before saving -- if it's there but off, she turns it on; if it's already on, she just confirms. Duplicates can't be created anymore.

"Dinner," "society," "foundation" now recognized as formal

Calendar events with words like "dinner," "banquet," "gala," "lecture," or "society meeting" weren't always triggering Vera's formal-event detection, meaning she'd suggest a casual outfit for a work dinner at a private club. Formal-event language expanded -- Vera now recognizes more of the real words people use for dressed-up events.

AI Shopper recommends the right gender

When AI Shopper searched for items to fill a gap, it was passing a gender-neutral query to Amazon. Users with a men's wardrobe would see some women's items in their recommendations and vice versa. Queries now include "mens" or "womens" prefix based on your wardrobe preference, so what you see matches what you wear.

eBay secondhand search now pays to keep the lights on

The "Find it secondhand on eBay" button that shipped on April 12 was working for you -- it showed real listings with real prices -- but the links weren't being routed through eBay's affiliate program. No commission tracking, no partnership revenue. That was a silent oversight from the first launch. Now every eBay link is a proper affiliate link that credits DRESSED when you buy. Same listings, same prices, same button. If you buy a secondhand piece through AI Shopper, a small commission helps keep DRESSED free.

Saved outfits follow the weather

When Tomorrow's Look saved an unconfirmed outfit, it had no expiration. If you closed the app Monday night and came back Wednesday morning, it might restore Monday's pending outfit -- including shorts -- for a cold Wednesday. Now saved outfits carry a timestamp and the weather conditions they were built for. If the stored outfit is more than 24 hours old, or the temperature has shifted more than 15°F since it was saved, it's discarded and Vera builds a fresh one for current conditions.

Home screen icons fixed

The app icon kept disappearing when you added DRESSED to your home screen. Turned out to be a macOS file quarantine flag silently blocking the icons from reaching the CDN on some deploys. Fixed at the source. The home screen icon and installable web app manifest now survive every deploy.

Vera sees your full closet, and sees it in a different order every time

Two compounding fixes to the outfit engine, plus calendar events now reach Vera's weekly planner.

Vera's response budget raised 5x

Every Vera outfit builder was set to a 200-token response budget -- barely enough for a 3-item outfit and a one-sentence reason. On larger closets, Vera's JSON response was getting truncated mid-sentence. The truncated response failed to parse silently, and a fallback mechanism filled in missing categories from your least-worn items. The result: outfits that looked like Vera picked them but were actually a deterministic safety-net synthesis from a small subset of your closet. Every outfit builder (Today's Look, Plan My Week, Tomorrow's Look, Surprise Me, the chat occasion builder, the unworn-item feature, and the evening look builder) is now set to 1000 tokens. Vera's full response reaches the app intact.

Uniform shuffling within each wear tier

The sort that Vera sees before building each outfit used Math.random() - 0.5 inside a comparator -- a classic broken JavaScript shuffle that produces biased, non-uniform distributions. Middle-index items got an unfair advantage, which compounded with Vera's natural position bias to produce the same "favorite" items over and over. All four shuffle call sites (Today's Look, Plan My Week, Tomorrow's Look, and the day-level week planner) now use Fisher-Yates -- a genuinely uniform randomization. The wear-tier prioritization (never-worn items first, then 1-2x, then 3-5x, then 6+) still works the same way, but within each tier you get actual randomness instead of V8's TimSort deciding for you.

Calendar events now reach the weekly planner

Plan My Week was the only one of Vera's five builders missing calendar event references -- if you had "Client Dinner Thursday" on your calendar, Plan My Week had no idea while the other four builders did. Every day of the week plan now includes that day's calendar events in Vera's context, the same way Today's Look and Tomorrow's Look already did. If you're planning a week with a formal event in it, Vera now dresses you accordingly for that specific day.

Google OAuth consent screen

Google Calendar integration still shows an "unsafe app" warning during sign-in for users who connect their calendar. Branding has been verified (green checkmark from Google). The data access scope is still under review. No user action needed -- the integration works fine once you click through the warning.

Vera stops recommending t-shirts on weekdays, a smarter tomorrow, and secondhand shopping

Bug fixes and improvements carried over from yesterday, plus a new enforcement fix for Tomorrow's Look.

Vera now enforces dress code in Tomorrow's Look

Vera was recommending graphic tees and band tees for weekdays in Tomorrow's Look even when your dress code is set to smart casual. The weekday dress code filter was running on cached outfits but not on fresh Vera picks. Now it runs in code after Vera returns her suggestion -- if you have smart casual set, a collared or structured top is guaranteed.

Move today's outfit to tomorrow

New button on Today's Look alongside Surprise Me: "→ Tomorrow." Tap it and today's outfit moves to Tomorrow's Look, and Vera builds a fresh look for today. Useful when you like what Vera picked but want to wear it tomorrow instead.

Vera chat suggestions route to the right day

When you asked Vera in chat to suggest an outfit for tomorrow and tapped "Wear This," it was updating today's look instead. Fixed -- if your message mentioned tomorrow, the suggestion now goes to Tomorrow's Look.

Plan My Week first day no longer times out

The first day of the week plan was occasionally timing out while the rest of the week built fine. The cause: Plan My Week was starting while Tomorrow's Look was still loading, and both were competing for Vera simultaneously. The week planner now waits for Tomorrow's Look to finish before it starts.

Tomorrow's Look shows a loading state instead of collapsing

When Vera was building tomorrow's outfit, the card would collapse to nothing instead of showing a loading state. It now shows a spinner while the outfit loads.

Find it secondhand on eBay

The AI Shopper now shows a "Find it secondhand on eBay" button under each wardrobe gap. Tap it to see matching secondhand listings -- same item, fraction of the price.

Badge wall, sandals in the cold, and a smarter tomorrow

A full day of fixes, new Insights features, and outfit routing improvements.

Badge wall and Insights stats

Thirteen achievements are now live on the Insights page — tied to real wardrobe behavior like adding 25 items, confirming 10 outfits, or maintaining a 7-day streak. Each badge shows earned vs. locked state. Also new on Insights: a Closet Completion Score (gender-aware — men's users don't need dresses to score 100%), a Cost Per Wear motivation stat showing total value worn per wear across confirmed outfits, and milestone toasts at 5, 10, 25, 50, and 100 items added.

Badge wall no longer shows on every page

The Achievements section and CPW stat were rendering at the top or bottom of every view in the app — Today's Look, Vera's Rules, Closet, everywhere. They're now correctly scoped to the Insights page only.

Vera Gets Better messaging

When your wardrobe is sparse (under 10 items), Vera now shows a note explaining that her suggestions improve as you add more pieces — rather than silently producing repetitive outfits.

Sandals blocked in cold weather

Vera was suggesting open-toe shoes and sandals on 40°F days. The temperature filter that already blocked short sleeves and shorts below 55°F wasn't applied to footwear. Fixed — sandals, slides, and open-toe shoes are now blocked below 60°F in Today's Look, Plan My Week, and Tomorrow's Look.

Outfit safety fixes

Two edge cases fixed: the filter that strips bad tops when a dress is in the outfit now has a safety check so it never removes all tops and leaves the outfit topless. And the shoe requirement check now skips gracefully if your closet has no shoes, rather than silently breaking the outfit builder.

Vera explains herself when enforcement changes the outfit

When code-level enforcement swaps or removes items from Vera's original suggestion, the outfit reason is now regenerated in Vera's voice to describe the actual outfit — not the one she originally picked. Applies to all three builders.

More item data sent to Vera in Plan My Week and Tomorrow's Look

Pattern, formality score, occasions, and gender were already included in Today's Look's item list — but not in Plan My Week or Tomorrow's Look. Now all three builders send the same complete item data to Vera.

Tomorrow's Look shows a loading state instead of collapsing

When Vera was building tomorrow's outfit, the card would collapse to nothing instead of showing a loading state. It now shows a spinner while the outfit loads.

Plan My Week first day no longer times out

The first day of the week plan was timing out while the rest of the week built fine. The cause: Plan My Week was starting while Tomorrow's Look was still loading, and both were competing for Vera simultaneously. The week planner now waits for Tomorrow's Look to finish before it starts.

Vera's chat suggestions now route to the right day

When you asked Vera in chat to suggest an outfit for tomorrow and tapped "Wear This," it was updating today's look instead. Fixed — if your message mentioned tomorrow, the suggestion goes to Tomorrow's Look.

Move today's outfit to tomorrow

New button on Today's Look: "→ Tomorrow." Tap it and today's outfit moves to Tomorrow's Look, and Vera builds a fresh look for today. Useful when you like what Vera picked but want to save it for a different day.

PWA icons now stay on the CDN

A _headers file was added to prevent the app icons from being evicted from Netlify's CDN cache — they were occasionally 404ing when you added DRESSED to your home screen.

Vera gets smarter, dresses stop breaking, and annual billing is live

A long day of fixes and improvements. Here's what changed.

Vera now reads who you are before she reads your wardrobe

Style memory and life context used to get appended at the end of Vera's instructions — after she'd already read through 70 items. Now both lead the prompt in all three builders (Today's Look, Plan My Week, Tomorrow's Look). Vera reads who you are before she reads what you own. The suggestions feel more like they're coming from someone who knows you.

Day-of-week style rules now enforced in code

If you have a rule like "no quarter-zips on weekends," Vera was reading it but treating it as a suggestion. Now the app enforces it in code — if the rule says no, the item doesn't appear. Applies to any rule with day-of-week language.

Dresses now work correctly across all builders

Three bugs fixed: (1) Vera was pairing dresses with separate bottoms — skirts, trousers, shorts — because the check that strips bottoms was only running in Today's Look. Now runs in Plan My Week and Tomorrow's Look too. (2) Pullovers, crew necks, quarter-zips, and hoodies were appearing over dresses. Blocked. (3) Items with "dress" in the name — like slip dresses — that were miscategorized as tops are now auto-corrected on login.

Cold-weather shorts blocked in Tomorrow's Look

Shorts were appearing in Tomorrow's Look on 48°F days. The temperature filter was only blocking short-sleeve tops, not shorts. Fixed — shorts are now filtered out below 55°F the same way short sleeves are.

Plan My Week dress code now uses the correct day

The weekday dress code filter was using today's day when building the week plan — so if you ran Plan My Week on a Friday, every day of the week was getting Friday's rules applied. Sunday was getting the smart casual filter. Fixed — each day in the plan now gets its own correct day-of-week check.

Belt swap now searches your full wardrobe

When Vera picked a belt that didn't match your shoes, the swap looked for a replacement only in the items already pulled for that day's outfit — a small subset. If your matching belt wasn't in that subset, the belt got dropped entirely. Now the swap searches your full wardrobe. If a matching belt exists anywhere in your closet, it gets used.

Annual plan: $80/year

Pro is now available annually at $80/year — two months free compared to monthly. The upgrade screen now shows both options side by side. Monthly is still $8.

PWA icon restored

The app icon was 404ing when you added DRESSED to your home screen. Fixed — both sizes are back on the CDN.

Outfit quality fixes across all builders

Three bugs that were causing bad outfit suggestions. All fixed.

Two tops in one outfit. Vera was occasionally returning two items from the same category — a knit shirt and a performance shirt, for example — and nothing was catching it before the outfit rendered. A category deduplication pass now runs after all enforcement: one top, one bottom, one shoe. Accessories and outerwear can still stack.

Black belt with brown shoes. The belt/shoe color match enforcement existed but was running in the wrong function — it ran during color clash detection, not during outfit building, so it never saw Vera's final outfit. Now it runs inside the outfit builder directly. If you have a matching belt it swaps in. If you don't, the belt drops entirely. No belt is better than the wrong belt.

Parity across builders. Both fixes now run in Today's Look, Plan My Week, and Tomorrow's Look.

Milestone 1 complete: Vera stops embarrassing herself

Five sessions planned over two weeks. Done in one night. Here's everything that shipped.

Women's shoe enforcement. A new enforcement function runs for every outfit built for women's items. Athletic trainers are blocked at formal and smart casual events. Flip-flops are blocked at anything that isn't casual or beach. Previously Vera simply skipped men's shoe rules for women's items — she wasn't applying anything in their place. Now she is.

Women's occasion enforcement. Two hard rules added for women's items: mini skirts are blocked at business formal events, and white or ivory items are blocked at weddings. These are the rules every stylist knows. Vera now knows them in code, not just in her prompt.

Gender toggle in item editor. You can now set the gender on any closet item — Men's, Women's, or Unisex — directly from the add and edit forms. Previously gender was assigned automatically from your profile setting and couldn't be changed per item. Now it can.

Outfit combination tracking. Vera now sees the last 14 days of your wear history before building today's outfit. If you wore the same combination on Monday, that's in her context as a do-not-repeat instruction. She won't serve you the same outfit twice in a two-week window.

Outerwear enforcement in today's look. When the temperature is below 45°F, Vera now guarantees a coat is included in today's outfit — the same enforcement that already existed in Plan My Week and Tomorrow's Look. The gap was in the main daily builder. Closed.

Favicons restored. The favicon was 404ing — the icon files weren't in the repo. Both the browser favicon and PWA icon are back.

Women's outfit intelligence, style rules research, and six hours inside a JavaScript error

A long session. The honest version: one JavaScript bug — a brace count mismatch introduced during a previous fix — took six hours to diagnose and resolve. The deploy pipeline kept producing a syntactically broken file that Chrome's V8 engine rejected silently. Finding it required diffing good and bad deploys byte by byte. No shortcut. That's vibe coding without the sugarcoating.

Here's what actually shipped.

Belt now drops when no color-matching belt exists. Previously if Vera picked a belt and no matching one existed in your wardrobe, the mismatch stayed. Now the belt is dropped entirely. No belt is better than the wrong belt.

Vera now tells you when she changed the outfit. When code-level enforcement swaps or removes items from Vera's original suggestion, a small note appears: “Items were adjusted to match your style rules.” Previously the outfit silently changed with no explanation.

Quarter-zip base layer fix. The auto-injected base layer was occasionally inserting a mid-layer (sweater, knit) underneath a quarter-zip instead of a proper base. Fixed — only true base layers are injected now.

Comprehensive style rules documented. Before writing more enforcement code, I researched and documented the actual consensus across menswear and womenswear authorities — Gentleman's Gazette, Emily Post Institute, Corporette, Karen Millen, Klodsy, and others. 14 sections covering formality hierarchy, layering, shoe rules, belt rules, color rules, pattern mixing, occasion codes, and accessory rules. The document distinguishes what has strong cross-source consensus (enforce in code) from what's subjective or body-type-dependent (leave to Vera's judgment).

Women's outfit quality improvements. The enforcement suite was built for men's clothing and was silently applying men's rules to women's wardrobes. Four changes to fix this:

This is the foundation for women's-specific enforcement — mini skirt at business formal, white at a wedding, trainers with a formal outfit — which comes next.

Belt-drop enforcement, homepage performance, and deploy pipeline hardening

A long debugging session focused on code-level enforcement and infrastructure reliability.

Belt now drops when no color-matching belt exists. Previously, if Vera picked a black belt with brown shoes and you only owned one belt, the enforcement found no brown belt to swap in and left the mismatch in place. Now the belt is dropped entirely rather than worn mismatched. No belt is better than the wrong belt.

Facebook Meta Pixel moved out of the critical render path. The pixel initialization was running synchronously in the <head>, blocking first paint while the browser waited for Facebook's servers. It now loads after the page's load event fires. This recovered several points of mobile PageSpeed score.

Font and asset cache headers added. Fonts, mockup images, and OG images now get long-lived cache headers (1 year, immutable) so repeat visitors don't re-download them on every page load.

Deploy pipeline hardened. All file writes in the deploy script now use atomic replace (write to .tmp, then rename) and explicit UTF-8 encoding, preventing truncation of the compiled app source on deploy.

Interactive weekly planner, Meta Pixel, share buttons, and content updates

A second build session the same day. Content improvements, a new interactive tool, and distribution infrastructure.

Weekly Outfit Planner is now an actual tool, not just an article

Enter your city at Weekly Outfit Planner and get a 7-day outfit formula based on the real weather forecast -- no account needed. Each day shows a top, bottom, shoes, outer layer if needed, and a practical tip. The planner auto-loads for Chicago on page open and works for any city worldwide. This is what separates the page from every printable PDF planner out there.

What to Wear Today page significantly expanded

Added a weather condition grid (rainy, hot, transitional, cold) to /what-to-wear-today/, a Generic App vs. DRESSED comparison table showing exactly why stock-photo weather tools fall short, and a new rainy day section. The page now answers the question more completely.

Meta Pixel installed across the entire site

Starts building a custom audience from existing traffic immediately -- the foundation for future paid distribution.

Share buttons updated sitewide

Added Threads and Email (opens your mail client with the link pre-filled -- no list required). Removed X. Facebook retained. Final set: Threads, LinkedIn, Facebook, Email, Copy link.

Vera learns who you are, wardrobe intelligence, enforcement overhaul, and history fixes

The biggest single-day improvement to Vera's outfit quality since launch. Seven significant changes across enforcement, personalization, and data integrity.

Vera now knows your life, not just your clothes

A new Life Context section in About You lets you tell Vera what you do for work, what you do outside work, and what you're trying to achieve with how you look. That context flows into every outfit suggestion -- so Vera can suggest looks that fit your actual life, the way a personal stylist who knows you would. This is the gap that separated Vera from conversational AI stylists. It's now closed.

Wardrobe formality scoring

Every item in your closet now gets a formality score from 1 (gym wear) to 5 (formal) -- assigned automatically when you scan new items, or via the Score Wardrobe Formality button in About You. Vera uses these scores to enforce outfit consistency: no more wingtip oxfords with band tees, no more blazers with hoodies. The score is based on item type, category, and visual descriptors -- not just the name.

Color clash enforcement

Four new hard rules enforced in code: (1) navy and black together is blocked -- looks like a mistake, not a choice; (2) denim on denim (Canadian tuxedo) is blocked; (3) athletic/sport shoes with dress trousers are swapped out automatically; (4) hoodies under blazers are replaced with appropriate mid-layers. These rules cannot be overridden by Vera's reasoning -- they're caught before she ever sees the outfit.

Brown shoes with black bottoms blocked

The cognac brogues + black jeans problem. Now caught and corrected in code. A non-brown shoe is substituted automatically. Jeans also now count as a casual bottom for formality scoring purposes, so wingtip brogues with any denim get flagged.

Wear history and streak now working correctly

Two separate Supabase issues were silently blocking all history writes: a missing formality column on the closet table (causing all wear count saves to fail), and no unique constraint on (user_id, date) in the history table (causing upsert to fail silently). Both are fixed. History now records every confirmed outfit. The streak counter builds correctly from today forward.

Swap picker now shows shackets when swapping a western shirt

The swap picker previously filtered strictly by category. Terminal-layer tops (western shirts, shackets, flannel worn open) and outerwear now cross-pollinate in the picker -- when you swap a western shirt, shackets appear as options, and vice versa. Graphic and plain tees are excluded from terminal-layer swap options.

About You renamed consistently throughout the app

"Style Profile" is now "About You" everywhere -- nav, page headers, help references. The dynamic style title (which was truncating in the sidebar) is replaced with the consistent label. The Score Wardrobe Formality button moved from Wardrobe Audit (wrong home) to About You (right home), with a WARDROBE INTELLIGENCE section label to distinguish it from the style discovery section.

Video call mode, life chapter awareness, Supabase fixes, UI mockups, and launch prep

A full build session. Five significant improvements across the app, content, and infrastructure.

Video call mode

Vera now auto-detects Zoom, Teams, Google Meet, and other video events in your calendar. When she sees one, she adjusts her recommendations: solid colors and simple textures (fine stripes and herringbone cause moiré on camera), medium-to-dark tones that read well on screen, and collared or V-neck tops that frame the face. Applies to Today's Look, Plan My Week, and Tomorrow's Look. Previously, video calls scored as casual -- now they get their own tier with camera-specific guidance.

Life chapter awareness

Vera now scans the next 14 days of your calendar for high-stakes events -- presentations, interviews, weddings, client dinners, board meetings. When something important is approaching, she conserves your key formal pieces rather than burning your blazer on a casual Monday. The forward note names the specific items to hold back and how many days until the event.

Gap exclusions and Gmail scan date now saving correctly

Two Supabase profile columns -- gap_exclusions (dismissed AI Shopper suggestions) and last_gmail_scan (Gmail receipt scan date) -- were being referenced in code but silently dropped before reaching the database. Both are now in the safeKeys whitelist and the corresponding columns were added to the profiles table. AI Shopper dismissals now persist across sessions.

App UI mockups added to two content pages

/digital-wardrobe-app/ now has an inline closet grid mockup showing the wardrobe catalog. /cost-per-wear-calculator/ has a new CPW ranking mockup showing items ranked by cost-per-wear with color-coded value ratings. Both inlined as SVG to avoid CDN caching issues.

/wardrobe-paralysis/ meta description rewritten

The old description explained a feeling everyone already knows they have. The new one leads with data ("You own 80 items and wear fewer than 20% of them") and reframes the problem more specifically -- better click signal at position 7.

Product Hunt launched

Scheduled for April 8. A promo code for first month of Pro free is live for launch day. First comment submitted. Gallery screenshots uploaded.

Confirmed outfits now stick on login, tees blocked on smart casual weekdays, and the site got a significant content overhaul

Two Vera bugs that had been there a while, plus a large batch of content improvements across all articles.

"I'm wearing this" wasn't sticking after a reload

A race condition was causing the geolocation effect to fire before your confirmed outfit had finished loading from the database -- it would see an empty state, call buildOutfit, and overwrite whatever you'd confirmed. Fixed: the effect now waits for the profile load to fully complete before checking confirmed state.

Tomorrow's Look was showing tees on smart casual weekdays

Two problems: the tee filter's blocklist was too narrow (it caught "graphic tee" and "t-shirt" but missed items named things like "White Tee" or "Navy Tee"), and the threshold to activate the filter required at least two collared tops -- so if you only had one, tees came back anyway. Both fixed: blocklist broadened, threshold lowered to one collared top. The hardened prompt instruction now explicitly says plain t-shirts are not acceptable on smart casual weekdays.

Cached tee outfits now self-heal

Even after fixing the filter, a saved week plan in Supabase could still restore a bad outfit on login, bypassing the new filter entirely. When tomorrow's cached outfit contains a tee on a smart casual weekday, the cache entry is now wiped and a fresh build triggered automatically. One-time correction -- after that it saves a compliant outfit and never needs to do it again.

5 new articles added to the style guide hub

Small wardrobe, build an online wardrobe, what colors should I wear, AI outfit generator, and what to wear to a wedding were missing from /style-guide/. All added, numbered correctly (cards now run 1--23).

The Story -- share the piece, not just the photo

Most of the clothes people love most have a story. This feature lets you tell it.

Every closet item now has a story field

Open any item in your closet and you'll see a text field: "The story behind this piece." Where you got it, why you still have it, how long it's been in rotation. Optional, but it's what makes the shared page worth reading.

One tap to share

There's a share icon in the corner of every photo in your closet. Tap it and DRESSED generates a public page at trydressed.com/closet/[your-item-slug] and opens the native share sheet. No extra steps.

The public page shows everything worth knowing

The photo, name, brand, colors, cost per wear, and your story. Plus a link to find something similar in the AI Shopper.

Make it private any time

Open the item in edit mode and tap "Make private." The page disappears immediately.

Vera got smarter, the closet got easier to use, and a bunch of things that were silently broken got fixed

Long session today. A lot of it was Vera quality -- she was making outfit mistakes that any stylish person would catch, and she was ignoring your dress code on weekdays despite the setting existing. Also fixed a closet bug that was eating shirts you tried to add.

Vera now knows how clothes actually layer

She had the philosophy of good style but not the practical knowledge. She now knows that western shirts and flannels go over a tee, not over a knit. That quarter-zips need a base layer. That a blazer over a band tee is intentional but a blazer over a wrinkled henley is just a mistake. This is baked into her identity, not a list of rules she can ignore.

Vera now knows what embarrasses people

Brown shoes with a black belt. Double denim in matching washes. Short sleeve dress shirts at anything formal. Cargo shorts with anything elevated. Graphic tees with dress trousers. She knows these things look bad and won't suggest them.

Vera now prioritizes clothes you haven't worn

She was anchoring on the same 5-6 familiar pieces every day. The closet list she sees is now weighted toward items worn 0-2 times, with heavily worn items appearing last. She also has an explicit instruction that high wear count means look elsewhere first.

Weekday dress code tee filter was using today's day for tomorrow

When it was Sunday, the filter thought tomorrow was also Sunday and skipped dress code enforcement entirely. Fixed -- Tomorrow's Look now correctly checks Monday's dress code, not Sunday's.

Plan My Week now stays consistent with Tomorrow's Look

If Tomorrow's Look already had an outfit, Plan My Week was rebuilding Monday from scratch and showing something different. Now it uses whatever Tomorrow's Look already picked for the first day, keeping Vera's recommendations consistent across views.

Thumbs down added to Plan My Week

You can now tap 👎 on any day in the week plan, type what's wrong, and Vera saves it as a permanent style rule and reshuffles that day. It was only available on Today's Look before.

Adding duplicate shirts no longer silently eats them

When you tried to add multiple shirts Vera flagged as similar, they were getting silently deleted -- either by the duplicate check in the add flow, or by a startup routine that removed same-name items on login. Both are fixed. The duplicate warning now shows an editable name field directly in the card so you can rename the item before adding. The startup dedup now only removes items that are truly identical (same photo URL), not items that happen to share a name.

Add Anyway actually works now

Previously tapping Add Anyway ran another duplicate check that blocked the item anyway. Fixed -- Add Anyway bypasses all duplicate checks.

Photo identification was failing with an API error

The app was calling a model string that doesn't exist. Fixed -- now using the correct model.

No more 30 seconds of silence after scanning a photo

The spinner now stays visible through the full identification and duplicate check process. The status text explains what's happening: analyzing photo, checking for duplicates, saving.

Sticky + Add Item button at the bottom of the closet on mobile

Previously you had to scroll all the way back to the top to add another item. Now there's a gold button that follows you as you scroll.

JSON-LD schema fix on /weekly-outfit-planner/

A raw HTML link inside a FAQ schema block was causing a Google Search Console parsing error. Fixed -- the link was removed from the schema.

Deploy pipeline fixed

The deploy script wasn't pulling the latest code from GitHub before deploying, which meant many fixes were going live hours late or not at all. The script now clones fresh from GitHub on every run.

Vera was ignoring your dress code, the demo was broken, and the homepage got a lot faster

A long session fixing things that were silently wrong. Some of these bugs have been there since launch -- Vera was reading your dress code preference from the wrong place in the database, which means she was ignoring it entirely. Here's everything that changed.

Dress code was being read from the wrong field

weekdayDressCode lives at profile.fitProfile.weekdayDressCode, not profile.weekdayDressCode. Vera was silently falling back to business casual for everyone regardless of what you'd set. Fixed across all five outfit builders.

Dress code wasn't saving after logout

The fit_profile column didn't exist in Supabase. Every save was failing silently and the setting was gone on next login. Column added, saving works now.

Weekday dress code now enforced in code

Previously it was just a prompt instruction -- Vera could ignore it. Quarter-zips, hoodies, and fleeces are now filtered from the available pool on weekdays when dress code is Smart Casual or above, as long as other mid-layer options exist.

Dress code card added to Style Profile

It was only available during onboarding before. You can now update it any time from Settings → Style Profile, and the selected option highlights clearly when saved.

Shoe formality was missing from the main daily builder

enforceShoeFormality was already running in Plan My Week, Tomorrow's Look, and Surprise Me -- but not in the core buildOutfit function that runs every morning. Dress shoes could still appear with casual outfits. Fixed.

Quarter-zip layering enforcement added to all builders

Quarter-zips and mock necks now always get a collared shirt underneath. If Vera picks a quarter-zip without one, the tee gets swapped for the least-worn collared shirt in your closet.

"Not Today" now accumulates rejections properly

Tapping Not Today multiple times in a session now blocks all previously rejected items -- Vera can't serve an outfit containing anything you've already said no to until you confirm something.

Three outfit builders were crashing the app

Day-of-week logic was embedded inside string literals, which Babel can't handle. The app was failing silently for all users on those builders. Pre-computed as named variables and fixed.

Demo was showing your real closet

If you were logged in and visited the demo, you'd see your own wardrobe instead of the sample one. The demo now bypasses auth entirely -- it always shows Alex's synthetic closet regardless of login state, with mock calendar events, real outfit photos, and CTAs to sign up.

Swipe cards in Style Profile now show real clothing photos

The swipe discovery feature was using emoji placeholders. It now shows actual product photography (Ideogram-generated flat lays) for each item.

Homepage performance: 78 → 99 on mobile PageSpeed

Self-hosted all fonts (no more Google Fonts round-trip), added direct woff2 preload for the LCP element, removed a non-composited shimmer animation, and deferred Google Analytics past first paint. FCP went from 3.0s to 0.9s.

Homepage accessibility: 95 → 100

Several low-contrast elements across the page and sidebar were below WCAG AA threshold. All fixed.

Sidebar "Try Free" button was going to the demo

It now goes to the app.

Mobile overhaul, light theme, and AI Shopper improvements

Spent the evening working through a full mobile audit and a design pass on the content pages. A lot changed. Here's what's different.

Light theme on all content pages

The dark background was too hard to read -- especially on mobile in daylight. All articles, guides, and content pages are now on a warm white background with DM Sans body text. The app and homepage stay dark.

Hamburger menu on mobile

The sidebar navigation now collapses into a slide-in drawer on small screens. Tap ☰ to open, tap the overlay or ✕ to close. Desktop is unchanged.

Sticky nav on all pages

The DRESSED logo, hamburger, and Try Free button now stay locked to the top as you scroll on every page.

Horizontal scroll fixed

Something was making the page wider than the screen on mobile. Tracked it down and fixed it across all pages.

Font sizes bumped sitewide

Body text was running at 14--15px across most content pages -- below the readable threshold on mobile. Everything is now at 16px minimum, with article body text at 1.05rem/weight 300 for proper reading comfort.

AI Shopper is now seasonal

Vera was recommending heavy wool sweaters in late March. She now knows what season it is, what's coming next, and what the current temperature is before making shopping recommendations.

Women's products filtered from men's feed

Gender-ambiguous product titles (like "Everlane Cashmere Sweater") were slipping through with female models. The visual check is now stronger and every search term is prefixed with "mens" to prevent it upstream.

Shoe formality enforcement rewritten

The old version only caught formal shoes with shorts. The new version scores the entire outfit -- graphic tees, band tees, sweatshirts all signal casual. If the outfit is casual, wingtips stay in the closet.

Russ quote moved above the CTA

The testimonial was getting cut off below the fold on mobile. It now sits above the Sign in button where it belongs.

A lot got fixed this morning

Launched publicly three days ago. Spent this morning before work finding and fixing things that were wrong. Here's the honest version of what happened and what I did about it.

Short sleeves in freezing weather

Vera was recommending short-sleeve shirts in 31-degree weather. Fixed -- short sleeves are now filtered out in code when it's under 55°F, regardless of what Vera thinks looks good.

The same 5 pieces every day

Vera kept suggesting the same 5 pieces even with 48 items in the closet. Fixed -- the closet list is now shuffled on every call so Vera doesn't anchor on the same items every time.

Plan My Week was only planning 4 days

Fixed -- it now plans all 7.

Tomorrow's look wasn't auto-populating

It should show up the same way Today's Look does -- without you having to ask. Fixed.

"Not Today" was only swapping shoes

It now demands a completely different look and removes the rejected items from Vera's available pool entirely.

Week plan was scheduling today's outfit for tomorrow

Fixed -- today's confirmed outfit is excluded before the week plan runs.

Dress shoes with shorts

I know. Fixed in code -- the app now detects formal shoes paired with casual bottoms and swaps the shoes automatically.

Shacket without a shirt underneath

Fixed -- any mid-layer or open layer without a base top now gets one injected automatically.

Today's look was auto-refreshing when weather data arrived

Then showing the same outfit. Fixed -- weather arriving no longer overwrites an outfit that's already been built.

Removed some hardcoded preferences

Some hardcoded style preferences were affecting every user's experience. None of that should have been in there. Removed.

Streak counter in the top bar

Replaces the redundant weather display since weather now shows on both outfit cards.

Confirmation modal after tapping WEARING THIS

Reassurance that the outfit is logged, with an optional photo prompt instead of a mandatory file picker.

DRESSED is live

Built this over two weeks of nights and weekends. The pitch is simple: you shouldn't have to think about getting dressed. Add your clothes once, and every morning Vera builds you an outfit based on the weather, your calendar, what's clean, and what she knows about your style.

It's free to try. No credit card. Sign in with Google. Pro is $8/month and unlocks Plan My Week, Pack a Trip, and unlimited daily looks.

GET IN TOUCH

Something's broken? Feature you want? Something Vera did that made you laugh or made you look bad? Email feedback@trydressed.com. I read every one.