286 lines
42 KiB
Markdown
286 lines
42 KiB
Markdown
# Progress - 2RE03 Portfolio Site
|
||
|
||
> What works, what's left, current status, known issues, and decision evolution.
|
||
> Last updated: 2026-10-01.
|
||
|
||
## What Works
|
||
- Memory bank initialized in the standard multi-file form.
|
||
- Source material surveyed and inventoried (see `reference-materials.md`).
|
||
- Six linked pages built: `index`, `case-studies`, `work`, `about`, `services`,
|
||
`contact` - plus 10 case study detail pages in `case-studies/`.
|
||
- Bootstrap 5.3.3 + Inter/Space Grotesk vendored locally (`css/`, `js/`, `fonts/`).
|
||
- 46 images in `img/`, optimised to WebP: 45 `.webp` plus `printtiresad.png`
|
||
(project art, client-site screenshots, 10 case-study hero backgrounds, 8 homepage
|
||
collage tiles). `img/` is **3.2 MB**, down from 20 MB.
|
||
- Web3Forms contact form with required-field + email validation, accessible
|
||
labels, and AJAX submit with a live status region.
|
||
- Collins-style **Case Studies** feature: a typographic index with
|
||
cursor-following hover previews (with a touch/no-JS thumbnail fallback) and
|
||
per-project detail pages.
|
||
- **6 real client websites** added as case studies - Teach Each Other AI,
|
||
Jensen's Red Barn, Mask Aid Project, 1 Woman's Art and Magic, Sam's Rules, and
|
||
Victoria Fuller - each with a screenshot and a link to the live site. (Cool Crap
|
||
From China lives in the portfolio gallery instead.)
|
||
- `work.html` now has **six galleries**, including a new **App Design** category
|
||
(Mehavior + the "(10+2) x 5" productivity timer app).
|
||
- Verified locally: all pages/assets HTTP 200, HTML tags balance, `js/main.js`
|
||
passes `node --check`, no links into `refrence/`.
|
||
- **Copy pass 1** (2026-09-22, uncommitted): the homepage closing CTA is now a
|
||
four-question invitation ("Have something that needs making?"), `services.html`
|
||
has a **Workflow** band telling the old workflow -> AI-assisted workflow ->
|
||
finished result story (including the "without turning the result into generic AI
|
||
slop" claim), and `work.html` closes with "Got a weird project? Give it to us."
|
||
- **Favicon** (2026-09-22, uncommitted): `img/favicon.svg` (a green rounded tile
|
||
with the digit `2` as outline paths, so it needs no client font),
|
||
`img/favicon.ico` (48/32/16), and `img/apple-touch-icon.png` (180x180, square
|
||
and opaque), all declared on the 16 pages with relative paths. Derived from the
|
||
site's own wordmark font instanced at `wght=700`.
|
||
- **Open Graph / social image** (2026-09-22, uncommitted): `img/og-image.png`
|
||
(1200x630), a green dot-grid card with the wordmark, the hero line, the domain,
|
||
and a washed strip of six real work tiles. All 16 pages declare the icons, a
|
||
canonical URL, the full `og:*` set and `twitter:card`, all absolute against
|
||
**https://2re03.com/** (which serves `.html` URLs).
|
||
- **Captioned work galleries** (2026-09-22, staged): every one of the 26
|
||
`work.html` figures is a `<figure>` with a `.carousel__caption` (piece name +
|
||
what 2RE03 did, always visible). The user then corrected six of the captions
|
||
and re-filed two pieces, and the section blurbs were re-voiced to match, so the
|
||
current state is: the **Urban Moto earplug article** (`writtenearplugs.webp`)
|
||
and the **YLEM Journal cover** (`printylemcover.webp`) sit in **Words** (4
|
||
items: Sam's Rules, YLEM Journal, Earplug feature, Napwell quick start guide),
|
||
**Print** holds 3 items, all print ads (Loren Kincaid, Macchiarini Metalworks,
|
||
K.C. Engineering), the **App Design** sub-lines read "Designed and coded" for
|
||
(10 + 2) x 5 and "UX and UI" for Mehavior, and each gallery's closing paragraph
|
||
now describes only what that gallery shows.
|
||
|
||
## Current Status
|
||
**Stage:** Built, verified, committed, and **published**, and now through a first
|
||
**copy pass** (2026-09-22): the homepage closing CTA, a new **Workflow** band on
|
||
`services.html`, and the `work.html` hook, all out of the four `Now` briefs in
|
||
`memory-bank/todo.md`. On top of that, the work galleries were captioned, those
|
||
captions were re-worded to the scope the user confirmed, and the section blurbs
|
||
were re-voiced to match, with the earplug article and the YLEM Journal cover
|
||
re-filed from Print into Words. That whole batch was committed by the user as **`8a7c3ea`** and uploaded by hand, and the live site was verified from the outside on 2026-09-22 (all four new assets 200 with the right MIME types, all 16 pages serving exactly one `og:image`, all 26 captions live, 61 asset paths with no 404s), so **everything built to date is public**. The current work is the **sales-funnel redesign**: planned in `memory-bank/sales-funnel-plan.md` with its shape decided (decision 34: one primary offer with a published price band plus a fixed-price diagnostic as the entry step). The offer facts landed on 2026-10-01: **The 2RE03 Website Launch** (4 to 6 weeks, from $3,500, most $4,500 to $7,500, 2 revision rounds) with the **Project Clarity Session** ($250, credited in full within 30 days) as the entry step, plus the funnel specifics (scheduling link, team voice, no turn-downs, Umami) recorded as decisions 35 and 36. The blocker is therefore cleared, and `memory-bank/offer-draft.md` has been reconciled against the answers and is ready to draft into pages. The last proof question was settled as **none yet** (2026-10-01): no client has agreed to a name, quote, logo or identifiable number, so the proof stage ships as named case studies plus the transformation outcome lines, adding nothing new client-attributable, which leaves deposits/milestones as the only open item before copy ships. **`services.html` is the first funnel page built**: the offer (funnel Blocks A and B) landed on 2026-10-01 and is waiting on the user's red pen, while `index.html`, `contact.html`, the case-study outcome lines and the measurement work are all untouched. Around it: user sign-off on the live copy, the case-study grid captions, a few caption names that were read off the artwork, and the Content/Polish items in `memory-bank/todo.md`.
|
||
|
||
## What's Left To Build
|
||
> The full, current backlog lives in **`memory-bank/todo.md`**; this section keeps only the headline items.
|
||
- **The sales funnel** (`memory-bank/sales-funnel-plan.md`): the site has no offer anywhere, no price or scope signal, no qualification, proof that isn't outcome-shaped, and no measurable conversion path. **Unblocked 2026-10-01**: the offer facts are in and `memory-bank/offer-draft.md` is reconciled, so the copy is ready to draft into `services.html`, `index.html`, `contact.html` and the case studies, then build (in the staged order in the plan).
|
||
- User review/refinement of copy + visual design.
|
||
- Optional real assets: a real 2RE03 logo (the favicon and Open Graph image both
|
||
landed on 2026-09-22).
|
||
- More/real portfolio items, and captions for the case-study grids (the
|
||
`work.html` galleries were captioned on 2026-09-22).
|
||
|
||
## Known Issues / Risks
|
||
- Copy is drafted in company voice and the first pass (2026-09-22: homepage CTA,
|
||
services Workflow band, work-page hook) is **not yet signed off** by the user.
|
||
- The favicon and the Open Graph image both exist (2026-09-22), and every page
|
||
declares the icons plus the full `og:*`/`twitter:*` set against
|
||
`https://2re03.com/`. Any real 2RE03 logo still does **not** exist.
|
||
- Deployed and **verified live** on 2026-09-22 (commit `8a7c3ea`): all four icon
|
||
and social assets return 200 and all 16 pages declare exactly one `og:image`.
|
||
Social scrapers may still serve a cached preview of the domain until their
|
||
caches turn over, so a share preview is worth re-checking later.
|
||
- No IKEHU video is present on this machine, so the possible motion/video section
|
||
cannot be built until the file or a URL is supplied.
|
||
- Case study hero backgrounds are generated JPEGs; **Urban Moto's is low
|
||
resolution** (450px native at its widest).
|
||
- Web3Forms posts to an external endpoint with a public access key in
|
||
`contact.html`; live submissions depend on that key/account remaining active.
|
||
- Galleries reuse the reference image set. The `work.html` galleries carry
|
||
per-image captions and matching blurbs as of 2026-09-22, but several of those
|
||
names were read off the artwork itself and still need confirming (Argent,
|
||
Drinking About..., D.R.I.V.E., 50 Shades of 2048, '78 Williams, `3dabandoned`,
|
||
and the unnamed `websinosalescopy` "Sales page"). The case-study grids are not
|
||
captioned at all yet: 9 pages hold a single `figure.card-work` beside the copy
|
||
and Urban Moto holds a 3-up grid, and `.card-work` has no caption style.
|
||
- No flyer, postcard, business card or letterhead artwork exists on this machine
|
||
(repo and external backup both checked on 2026-09-22), so those formats are
|
||
capability claims on the service cards and cannot appear in a gallery.
|
||
- Some case studies use names drawn from the source image filenames with generic
|
||
copy; others (the client sites, plus Urban Moto, Cart, and 1 Woman's Art and
|
||
Magic) are based on the user's factual notes.
|
||
|
||
## Evolution of Decisions
|
||
- **2026-09-10** - Initialized a single-file memory bank draft.
|
||
- **2026-09-10** - Replaced by the standard multi-file memory bank (this folder);
|
||
content ported over.
|
||
- Tone anchored on `refrence/index.html`; no individual attributions; `refrence/`
|
||
marked temporary.
|
||
- **2026-09-10** - Locked the stack (static HTML + vendored Bootstrap), styling
|
||
(Bootstrap + custom CSS), and brand (2RE03 only, no 2RE Factory), then built the
|
||
v0 scaffold.
|
||
- **2026-10-01** - Funnel offer answered and draft reconciled (decisions 35-36):
|
||
one primary offer (**The 2RE03 Website Launch**) plus the **Project Clarity
|
||
Session** entry step, a **scheduling link** as the secondary path, **team
|
||
voice**, **no turn-downs**, and **Umami** analytics deferred until the user sets
|
||
it up. The funnel's blocker is cleared and the copy is ready to draft and build.
|
||
- **2026-10-01** - Published-proof clearances settled as **none yet** (offer-sheet item 5): no client has agreed to a name, quote, logo or identifiable number, so the proof stage ships as named case studies plus the transformation outcome lines only, and deposits/milestones (item 9) becomes the only open item before copy ships.
|
||
|
||
## Progress Log
|
||
- **2026-09-10** - Initialized memory bank. Surveyed `refrence/` (2 HTML files +
|
||
23 images), captured project brief, tone, content model, and open questions. No
|
||
production files created.
|
||
- **2026-09-10** - Built and verified the v0 static scaffold: five pages, vendored
|
||
Bootstrap 5.3.3 + Inter/Space Grotesk fonts, `css/style.css`, `js/main.js`, and
|
||
the Web3Forms contact form. All pages/assets return HTTP 200 locally.
|
||
- **2026-09-10** - Rethemed the site to a green palette centered on `#2ee666`
|
||
(crimson/red tokens removed from production CSS/HTML).
|
||
- **2026-09-10** - Deleted the superseded draft `.clinerules/memory-bank-oops.md`.
|
||
- **2026-09-10** - Added the Case Studies feature (typographic index + 8 detail
|
||
pages + hover previews), wired into the nav/footer and the homepage.
|
||
- **2026-09-10** - Added 6 real client websites as case studies (5 new detail
|
||
pages + linked the existing Sam's Rules study to its live site); captured
|
||
screenshots into `img/`. Case-study list is now 13 entries.
|
||
- **2026-09-10** - Corrections: renamed the "Kincaid" case study to **Urban Moto**
|
||
(print design / art direction for a motorcycle magazine; 4 images:
|
||
printtiresad, printkincaidad, printmacchiariniad, writtenearplugs) and removed
|
||
the old page; recast **1 Woman's Art and Magic** as a two-book art series for
|
||
painter Joanna Signer plus the website to sell it.
|
||
- **2026-09-10** - Trimmed the case-study list from 13 to 11: removed **Cool Crap
|
||
From China** and **Data Vis Art**, replaced **Coop** with **Cart** (a 3D design
|
||
proposal), and kept the work in the portfolio (Cool Crap added to the Web
|
||
gallery; Data Vis Art moved to the Logos gallery).
|
||
- **2026-09-10** - Corrected **Mehavior**: it was an **app**, not a website - logo,
|
||
app interface/button design, and promotional material for an investor pitch.
|
||
Category updated to "App Design & Identity".
|
||
- **2026-09-10** - `work.html`: added an **App Design** category, moved Mehavior
|
||
into it, and added the **"(10+2) x 5"** productivity timer app (screenshot from
|
||
timer.2re.me). Section backgrounds re-alternated.
|
||
- **2026-09-10** - `work.html`: moved **Web Design** to the top. Order is now
|
||
Web Design, Logos, App Design, Print Design, 3D Modeling, Written Work (with
|
||
the section-background alternation preserved).
|
||
- **2026-09-10** - Renamed the **"Written Work"** category title to **"Editorial"**
|
||
everywhere it appears (work page heading, the homepage/services cards, and the
|
||
Sam's Rules category label "Editorial & Web").
|
||
- **2026-09-10** - Rebuilt the **Selected work** (homepage) and all six **Work**
|
||
galleries as Collins-style carousels: a native CSS `scroll-snap` track with
|
||
rounded, `object-fit: cover` (cropped) cards, plus `js/carousel.js` for
|
||
prev/next buttons, keyboard arrows, and mouse drag-to-scroll (touch swipes
|
||
work natively).
|
||
- **2026-09-10** - Expanded the **Mask Aid Project** case study: what we did is
|
||
now video production, a crowdfunding campaign, copywriting (all the text), and
|
||
translation from Chinese.
|
||
- **2026-09-10** - `work.html` Web Design gallery: added snapshots of Jensen's
|
||
Red Barn and Mask Aid Project. Also re-shot the **"(10+2) x 5"** timer image as
|
||
a close-up (composed to fill a 4:3 frame).
|
||
- **2026-09-10** - Homepage copy rewrite: dropped the avocado-hipster tagline for
|
||
a professional, team-voiced hero; renamed the "What we do" headline to
|
||
**"Web Design Is Only the Beginning"**. Tone guidance updated in
|
||
`productContext.md`.
|
||
- **2026-09-10** - Renamed the **"Editorial"** category to **"Words"** (it also
|
||
covers sales copy and technical writing). Updated `work.html` heading/caption,
|
||
the homepage + services cards (now mention sales copy), and the Sam's Rules
|
||
label ("Words & Web"). Supersedes the earlier "Written Work → Editorial" rename.
|
||
- **2026-09-10** - Homepage: moved **Selected work** above **What we do** (and
|
||
swapped their section backgrounds so the white/soft alternation still holds).
|
||
- **2026-09-10** - Pruned + reordered case studies (now **10**): removed **Argent**;
|
||
renamed **Victoria → Victoria Fuller** and **Cart → Upscale Food Cart** (pages
|
||
renamed to `victoria-fuller.html` / `upscale-food-cart.html`). New order: Mask Aid
|
||
Project, 1 Woman's Art and Magic, Sam's Rules, Mehavior, Jensen's Red Barn,
|
||
Upscale Food Cart, Silver Lining, Victoria Fuller, Urban Moto, Teach Each Other AI.
|
||
- **2026-09-10** - Enriched five case studies from the user's notes:
|
||
**Sam's Rules** (+ illustrations, downloadable companion content);
|
||
**Jensen's Red Barn** (Grandma Dorothy's scrapbook brought online as a slideshow);
|
||
**Silver Lining** (the mark helped bring clients to a high-end retreat);
|
||
**Victoria Fuller** (a Playboy Bunny - the only one with rights to the Playboy logo);
|
||
**Urban Moto** (guest articles; managed photography/editorial/ad submissions;
|
||
designed custom ads for clients).
|
||
- **2026-09-10** - **Jensen's Red Barn**: added "Social media setup", removed the
|
||
"Contact section" bullet. **Sam's Rules** category changed from "Words & Web" to
|
||
**"Book Design & Web"** (both lists + detail page).
|
||
- **2026-09-10** - `work.html`: moved `web50shadesof2048.png` from **Web Design**
|
||
into **App Design** (Web Design now 5 items, App Design 3).
|
||
- **2026-09-10** - `work.html` App Design: replaced `site-timer-app.jpg` with
|
||
**`2plus5times3.jpg`**, cropped from 398×820 to a centred 4:3 (398×298) so it
|
||
fills the card. (`site-timer-app.jpg` is now unused.)
|
||
- **2026-09-10** - Added the web **backend services** to the offering: web hosting
|
||
setup/management, site management & maintenance, and domain/URL sourcing. Covered
|
||
in `services.html` (new paragraph + 3 "What's included" bullets) and the homepage
|
||
Web Design card.
|
||
- **2026-09-10** - Removed **all em dashes** from the site copy (they read as
|
||
AI-generated): rewrote ~95 instances across the HTML plus CSS/JS comments and the
|
||
contact-form success message, using commas, colons, and parentheses. Page titles
|
||
now use " | ". Cleaned the memory bank too. (Vendored `bootstrap.min.css` left
|
||
untouched.)
|
||
- **2026-09-10** - Contact form: made **Subject optional** (dropped `required` and
|
||
its asterisk; the label now reads "Subject (optional)"). Required fields are now
|
||
Name, Email, and Message.
|
||
- **2026-09-10** - Hero rework (dropped the portrait): the global `.hero` now uses
|
||
the green gradient plus a faint dot grid (no photo), and the homepage adds a
|
||
low-contrast **work collage** (`.hero--collage`) of eight thumbnails
|
||
(`img/collage-1..8.jpg`, generated at 480x360, ~178KB total). `blue_eyes_Torrey.png`
|
||
is now unreferenced in production (still used by `refrence/index.html`).
|
||
- **2026-09-10** - Each **case study hero** now uses that project's own image as its
|
||
background: `.hero--image` (green overlay, heavier on the left for legibility)
|
||
with the image set per page via an inline `--hero-image` custom property. Hero
|
||
backgrounds generated as optimised JPEGs (`img/hero-<slug>.jpg`, max 1600px);
|
||
the transparent logos (Sam's Rules, Silver Lining, Victoria Fuller) were
|
||
composited onto brand green.
|
||
- **2026-09-10** - Case study hero tweaks: `.hero--image` gained a `--hero-position`
|
||
variable. **Mehavior** shows the top of its image (the logo) via `center top`;
|
||
**Victoria Fuller** sits at `center 10%` to show the cursive name near the top;
|
||
**Jensen's Red Barn** switched to the wide `red-barn-photo.jpg` panorama;
|
||
**Urban Moto** now uses the **middle** band of `printtiresad.png`.
|
||
- **2026-09-10** - Case study images no longer letterbox: `.card-work` now lets the
|
||
image define its own frame (`width: 100%; height: auto`, no fixed 4:3 box and no
|
||
light-green panel), so there is no space above or below. Added
|
||
`.card-work--frame` (4:3 + `object-fit: cover`) for Urban Moto's mixed-shape
|
||
grid. Feature-image `width`/`height` attributes corrected to real dimensions to
|
||
avoid layout shift.
|
||
- **2026-09-10** - Repo cleanup before the first commit: removed the temporary
|
||
`refrence/` source folder (19.4 MB) and four superseded images no longer
|
||
referenced by any page (`blue_eyes_Torrey.png`; `red-barn-photo.jpg`, which was
|
||
the source for `hero-jensens-red-barn.jpg`; plus `site-sams-rules.jpg` and
|
||
`site-timer-app.jpg`). All five were **moved** to
|
||
`/home/torrey/2RE03-unused-assets-backup/` rather than hard-deleted. Added a
|
||
minimal `.gitignore` (OS/editor cruft only); `css/`, `js/` and `fonts/` had no
|
||
orphans.
|
||
- **2026-09-10** - Version control: `git init` on branch `main`, then the first
|
||
commit (**79 files**, no `refrence/`). Remote `origin` is
|
||
`ssh://git@git.2re.top:22222/2re/2RE03-Design.git` (Forgejo, SSH key
|
||
`id_ed25519`).
|
||
- **2026-09-10** - Added **`TODO.md`** at the repo root as the single human-facing
|
||
backlog; the memory bank keeps only current priorities and points at it. The
|
||
**site was published** by the user, and `memory-bank/` + `.clinerules/` were
|
||
confirmed to stay tracked.
|
||
- **2026-09-10** - **Optimised every image to WebP**: 45 files converted (long side
|
||
capped at 1600px, `-q 82`, or `-q 90 -alpha_q 100` when transparent) and 97
|
||
references repointed across 13 HTML files. `img/` went **20 MB -> 3.2 MB**. The
|
||
one exception is `printtiresad.png`, kept as PNG because WebP made it bigger.
|
||
Verified: 0 missing references, 0 unreferenced files, all 45 WebP files decode,
|
||
all pages 200, and the before/after ratio-hint sets are byte-identical.
|
||
- **2026-09-10** - User set a **working agreement**: no `git commit` or `git push`
|
||
without explicit approval. Recorded in `activeContext.md` (Working Agreements at
|
||
the top, plus the decisions log) and `techContext.md` (Tool Usage Patterns).
|
||
- **2026-09-22** - User set a second **working agreement**: **do not edit files
|
||
outside the project folder** (`/home/torrey/Documents/Sites/2RE03`). Recorded in
|
||
`activeContext.md` (Working Agreements at the top, Recent Changes, and the
|
||
decisions log), `projectbrief.md` (Ways of Working rule 8), `techContext.md` (Tool
|
||
Usage Patterns), and here. No production files changed.
|
||
- **2026-09-22** - **Captions re-worded to the user's read-through, and two pieces re-filed into Words.** The user checked the new `work.html` captions against the archive and corrected the scope on six of them, all of which were worded as though the piece were only a picture: **Back That Ass Up** is the identity for a **political campaign art show** (hence the US-flag mark; the sub-line now says "Political art show" and the alt names the campaign), **Mehavior** was **UX and UI**, and **(10+2) x 5** was **designed and coded** end to end rather than merely drawn. The three ads - Loren Kincaid, Macchiarini Metalworks, K.C. Engineering - were normalised to **"Print ad"** (the last had read "Tire advert"), and **Sam's Rules of Money** became "Book editing and illustrations", which the old "Book cover" hid because the user edited the book *and* its illustrations. Two further pieces moved from **Print** to **Words**, applying the rule that a piece is filed under the category of its deliverable rather than of the paper it landed on: `writtenearplugs.webp` is captioned "Article, Urban Moto, February 2007" and `printylemcover.webp` "Editing and cover design", since the user edited the whole magazine including the cover. Print now holds 3 items, all print ads; Words holds 4, ordered book, magazine, article, guide. A grep confirmed nothing outside `work.html` referenced either moved file, so the two galleries were the only edits. Verified: 26 figures over 26 distinct images with one caption each and no duplicates, exactly two references to the moved files (both now in Words), tags balance and every reference resolves across all 16 pages, no em dashes, and - instead of eyeballing the arrows - the carousels were **measured** in a headless Chrome eval: `Print design gallery` is now `scrollWidth == clientWidth` (1116px) with both arrows disabled, exactly like the 3-item `App design gallery`, so shortening a gallery to 3 items leaves no dead control, while `Words gallery` overflows by 292px with only "next" enabled and `Logo design gallery` by 1360px. The Print and Words bands were also screenshot-checked at 1280px and 390px. Build intermediates lived in `.tmp-captions/` inside the repo and were deleted. **Uncommitted.**
|
||
|
||
- **2026-09-22** - User set a **code and writing style requirement**: **soft wrap**. No hard wrapping to a column limit in code or in memory-bank writing; lines break only at structural boundaries. Applied going forward only, with no reformat pass over existing files (explicit user instruction). Recorded in `activeContext.md` (Recent Changes, Important Patterns & Preferences, decisions log), `projectbrief.md` (Ways of Working rule 9), and `techContext.md` (new Code Style section).
|
||
- **2026-09-22** - **Backlog moved into the memory bank:** `TODO.md` at the repo root became **`memory-bank/todo.md`** (lowercase filename), so the backlog now lives alongside the other memory-bank files. Every reference was repointed (`activeContext.md` Recent Changes / Next Steps / decisions log / Important Patterns, `progress.md` Current Status + What's Left To Build, `techContext.md` Deployment + Code Style), and the move was recorded in `todo.md`'s own Done section. No site file referenced `TODO.md`, so the published site is unaffected. The move is **uncommitted** (working tree only).
|
||
- **2026-09-22** - **Copy pass 1** (the whole `Now` section of `memory-bank/todo.md`) implemented and verified, then recorded in `todo.md` (items moved to Done) and here. `index.html`: the closing CTA is "Have something that needs making?" plus the three client questions and "Tell us what you're trying to do. We'll figure out what needs to be made.", supported by a one-line `.cta-questions li + li` rule in `css/style.css`. `services.html`: new **Workflow** band between Process and the closing CTA, three cards (Old workflow / AI-assisted workflow / Finished result) with the middle card dark, carrying the AI-acceleration line. `work.html`: the closing band line is now "Got a weird project? Give it to us." The briefs' first-person voice was converted to the studio "we" and no em dashes were introduced. Checks run: tag balance on all touched pages (`html.parser`), em-dash scan, every relative `href`/`src` resolves to an existing file, HTTP 200 across all six root pages plus sampled case-study pages/assets, and headless-Chrome screenshots reviewed at 1280px and 390px for the two new sections. Verification screenshots were written to `/tmp` (outside the repo) and are not part of the project. **Uncommitted; no commit or push.**
|
||
- **2026-09-22** - **Favicon added** (first item of the Assets batch). Generated `img/favicon.svg`, `img/favicon.ico` (48/32/16) and `img/apple-touch-icon.png` (180x180), all from the site's own wordmark font: `fonts/SpaceGrotesk-latin.woff2` instanced at `wght=700` with `fontTools.varLib.instancer`, glyph outlines through `SVGPathPen`, rasterized with `rsvg-convert` and ImageMagick. The mark is a `#2ee666` rounded tile with the digit `2` in brand ink, chosen because the full wordmark and even `2RE` stop reading at 16 px. Verified: the ink is centred on the tile within half a pixel, the digit occupies ~56% of the tile and stays legible when rasterized at 16 px, all 16 pages declare the three icons with the right relative prefix, tags balance, every reference resolves, and each asset serves HTTP 200 with the expected MIME type. All build intermediates were kept inside the repo in `.tmp-favicon/` (never `/tmp`) and deleted afterwards, so no writes happened outside the project. Recipe recorded in `techContext.md` -> Icon & Social Assets. **Uncommitted.**
|
||
- **2026-09-22** - **Open Graph / social image added, live domain recorded.** Built `img/og-image.png` (1200x630) with PIL to match the site's hero: the 120 degree green gradient, the 18px ink dot grid, the tracked `DESIGN STUDIO` eyebrow, the `2RE03` wordmark, the hero line, `2re03.com`, and a 130px strip of six real work tiles under a green wash. Fonts came from the same sources as the favicon (Space Grotesk instanced at 700, Inter at 500 and 600), and the layout was tuned against measured ink bands rather than by eye. Then added `rel="canonical"`, the full `og:*` set (with `og:image:width`/`height`/`alt`) and `twitter:card` to all 16 pages, reusing each page's own title and description. The user supplied the live URL, **https://2re03.com/**, and probing it showed the host serves `.html` URLs (`/work` 404s, `/work.html` 200s), which is why canonicals use the `.html` form with the bare root for the homepage. Verified: exactly one of each of the 11 tags per page, `og:url` matches each page's canonical, the declared 1200x630 matches the actual file, tags balance, no em dashes, all references resolve, and every page plus the four new assets return HTTP 200 locally. The live site still 404s on the new files because they have not been deployed. Build intermediates lived in `.tmp-og/` inside the repo and were deleted. **Uncommitted.**
|
||
- **2026-09-22** - **Work captions, and the earplug move** (the last two Content/Polish items in `todo.md` that needed no new assets). All 26 `work.html` gallery figures became `<figure class="carousel__item">` blocks carrying a `.carousel__caption` (`Name<span>Format</span>`) under the `.carousel__media` frame, styled by two new rules in `css/style.css`: the name in semibold ink, the format on a muted second line, always visible rather than hover-only so it works on touch. `js/carousel.js` measures item width and position only, so the step and snap maths are untouched. The caption copy was written from the artwork itself after reviewing a labelled contact sheet of all 26 images (ImageMagick `montage`), which caught a swap in the source set: `writtenearplugs.webp` is the **Urban Moto earplug feature** (page 39, February 2007, headline "BIG EAR vs PLUGUP - Custom Fit EarPlugs", the written piece that gave the file its name) while `writtenstructions.webp` is the **Napwell quick start guide**. Per the backlog item, `writtenearplugs.webp` moved out of the Urban Moto case-study grid into the **Print** gallery (now 5 items), and that grid went from `row-cols-sm-2` to `row-cols-sm-3` so its three remaining ads sit in one clean row, with their generic alts made specific (K.C. Engineering, Loren Kincaid, Macchiarini). No caption carries an author byline. Verified: tags balance and every reference resolves across all 16 pages, exactly 26 figures over 26 distinct images with one caption each and no duplicates, headless-Chrome screenshots of the Logos, Print and Words galleries at 1280px and 390px plus the Urban Moto grid, and the local server returned 200 throughout. Build intermediates lived in `.tmp-captions/` inside the repo and were deleted. **Uncommitted.**
|
||
|
||
- **2026-09-22** - **Brief re-read: the two flagged caption strings settled, and `work.html` now matches the brief character for character.** The user re-sent the caption brief with `work.html` attached, which confirmed all seven items were already in place (political art show, UX and UI, designed and coded, three print ads, the earplug article and the YLEM Journal cover already re-filed into **Words**, Sam's Rules as editing plus illustrations) and settled the two strings that had been left open for them: the ads sub-line is written **"Print Ad"** with a capital A - the user's own rendering, kept verbatim, which makes it the page's only title-case sub-line - and the app is written **(10 + 2) x 5** with spaces around the operator. Both were changed in place; nothing else moved, no gallery changed size, and no other page, script, or asset was touched. Re-verified after the edit: 26 figures over 26 distinct images with one caption each and no duplicates, tags balance and every reference resolves across all 16 pages, no em dashes, and the galleries were **measured again** in a headless Chrome eval rather than assumed - `Print design gallery` stays `scrollWidth == clientWidth` with both arrows disabled and `Words gallery` keeps its 292px overflow with only "next" enabled, which is what the CSS predicts: `.carousel__item` is `flex: 0 0 auto; width: clamp(230px, 78vw, 340px)`, so caption copy cannot influence item width, the step, or the snap. **Uncommitted.**
|
||
|
||
- **2026-09-22** - **Section copy brought in line with the captions, and the last naming questions settled.** The pass that closed the gap the caption revision opened. Four `work.html` blurbs were re-voiced so nothing contradicts the caption above it: the **Words** intro is now "Editorial, documentation, and sales copy: we write it, we edit it, and we lay it out." (the old line claimed only writing, while YLEM Journal and Sam's Rules are editing work), the **App Design** blurb says some pieces were "coded end to end" and the rest "built to look real long before they ship" (the old line implied everything stopped at looking real), the **Print** blurb leads with the ads the gallery actually shows and keeps flyers, postcards, business cards, letterhead and product design as capability rather than as a description of the images, and the **Logos** intro adds ", and the occasional title slide" so the Dat Art slide in that gallery reads as deliberate. The Dat Art caption became **"Presentation for Motion Labs"** with a matching alt, since the image is a title slide and not a mark, and **"a pretzel stand" became "a food cart"** in both `work.html` and `services.html`, matching what the render shows (the cart is labelled *Gourmet Pasteles and Churros*) and the Upscale Food Cart case study. Three questions were settled by the user in the same exchange: **YLEM stays in both galleries**, the **`2plus5times3.webp` file name stays as-is** with the caption `(10 + 2) x 5` treated as authoritative, and the **Dat Art** piece stays in Logos. Verified: all seven new strings render and all five replaced strings are gone from both files, 26 figures over 26 distinct images with one caption each, tags balance and every reference resolves across all 16 pages, no em dashes, galleries re-measured in headless Chrome (unchanged: Print and App Design `overflow=0` with both arrows disabled, Words 292px with only "next" enabled) and screenshot-checked at 1280px and 390px for the Logos, Print and Words bands. The external asset backup was also inventoried, which established that **no flyer, postcard, business card or letterhead artwork exists anywhere on this machine**. The working tree was then **staged** with this batch's message pre-filled into `.git/COMMIT_EDITMSG`; nothing was committed or pushed by Cline.
|
||
|
||
- **2026-09-22** - **The batch was committed and deployed, and the live site was verified from the outside.** The user committed the staged work as **`8a7c3ea`** ("reworked some verbiage and added captions"), pushed it to `origin/main`, and uploaded the repo root by hand; the working tree is clean and `HEAD` matches `origin/main`. Verified live rather than assumed: `img/favicon.svg` 200 (`image/svg+xml`, 2.1 KB), `img/favicon.ico` 200 (15 KB), `img/apple-touch-icon.png` 200 (3 KB), `img/og-image.png` 200 (176 KB); all 16 pages return 200, each with exactly one `og:image` and two `rel="icon"` links; `/work.html` serves all 26 captions and the re-voiced blurbs ("The gallery shows the ads", "Presentation for Motion Labs", "(10 + 2) x 5", "and the occasional title slide", "coded end to end"), with zero occurrences of the replaced strings; `/services.html` serves the Workflow band and the food-cart copy; the homepage serves the new CTA. The new assets and Open Graph card are therefore **public for the first time**, which closes the Assets batch that had been repo-only since it landed. One caveat recorded: social scrapers may serve a cached preview of the domain until their caches turn over, so a share preview is worth re-checking later.
|
||
|
||
- **2026-09-22** - **The sales-funnel redesign was planned, and the offer shape was decided.** The backlog item "redesign the site as a sales funnel rather than as a design piece" moved from a one-line idea to a plan. Ten leaks were diagnosed in the current site: no offer anywhere, no price or scope signal, no qualification, proof that is not outcome-shaped, a single conversion path, no risk reversal, homepage ordering that fights the sale, unpositioned breadth, a CTA that asks before it gives, and nothing measured. A stage structure (Land -> Recognise -> Believe -> Offer -> Risk reversal -> Convert -> Measure) and a page-by-page draft went into the new `memory-bank/sales-funnel-plan.md`. Cline recommended **one primary offer with a published price band plus a fixed-price diagnostic as the entry step**; the user accepted, recorded as decision 34, with packaged engagements and consultative selling deferred rather than rejected. The fill-in-the-blank copy for `services.html`, `index.html` and `contact.html` (four blocks plus a proof-stage table for the 10 case studies) went into the new `memory-bank/offer-draft.md`, where every gap is a visible `[[slot]]` and no slot may be filled with an invented fact. **No production file was touched**: the live site is unchanged and the plan is blocked on the user supplying the offer facts.
|
||
|
||
- **2026-10-01** - **The offer sheet was answered and the offer draft reconciled, which clears the funnel's blocker.** All nine offer-sheet questions in `memory-bank/sales-funnel-plan.md` came back, plus the follow-up decisions: a **scheduling link** for the secondary path, **team voice** ("we") rather than a named individual, the reply-time promise kept, **no industries or project types turned down**, all pages kept consistent, and **Umami** analytics to be added later by the user. The settled offer is **The 2RE03 Website Launch** (4 to 6 weeks, from $3,500, most $4,500 to $7,500, 2 revision rounds) with the **Project Clarity Session** ($250, 60 to 90 minutes, credited in full within 30 days) in front of a 30-minute Project Fit Call. `memory-bank/offer-draft.md` was reconciled against the answers: the slot table now reads answered, revision rounds moved 3 -> 2, the "Site Assessment" proposal became the **Project Clarity Session**, the price band and floor were filled in, and the ten `[[TODO]]` case-study prompts were replaced by the ten transformation outcome lines (honest, because no hard numbers exist). Two items stay open: individual client clearances for published proof, and whether deposits or milestones are stated. **No production file was touched**; the edits are `sales-funnel-plan.md` and `offer-draft.md`, both uncommitted.
|
||
|
||
- **2026-10-01** - **The last proof question was settled as `none yet`, so the proof stage can be built without inventing anything.** Asked whether any client had agreed to be named, quoted, shown or given a logo, the user answered **not yet**. The permission *rule* stands (ask first), and no testimonial, client logo, metric or new identifiable detail goes on any page; the proof stage ships as **the named case studies plus the transformation outcome lines only**, and the client names the case studies already publish simply stay. A clearance can be added later if one arrives. This leaves **deposits/milestones (offer-sheet item 9) as the only open question** before the offer copy ships. **No production file was touched**; the edits are `activeContext.md`, `offer-draft.md`, `progress.md`, `sales-funnel-plan.md` and `todo.md`, all uncommitted.
|
||
|
||
- **2026-10-01** - **`services.html` was rebuilt around the offer, the first funnel page to ship.** The "Web Design" section became **The 2RE03 Website Launch** (the promise, the six inclusions, three fact pills, what you supply, what you own, `Start a project` plus `Not ready for a project?`), and **The Project Clarity Session** now sits below it as a dark card ($250, 60 to 90 minutes, `Book a Clarity Session`, credited in full within 30 days). The old web-craft detail (hand-coding, WordPress, hosting, domain, maintenance) was folded into the offer's supporting paragraph instead of being deleted, the capability grid stayed as "Also on the bench", the Process, Workflow and closing CTA bands are untouched, and the page's meta and `og:description` now name the offer and the price band. New CSS in `css/style.css`: `.pill`, `.pill--ink`, `.offer-terms`, `.eyebrow-cream`. Verified the same way as the caption passes: tag balance clean, no em dashes in our files, all references resolve across the 16 pages, and full-page screenshots at 1280px and 390px. `index.html`, `contact.html`, the case-study outcome lines, `thank-you.html`, the scheduling link and the Umami snippet are all still to come, and `services.html` plus `css/style.css` are uncommitted and awaiting the user's red pen.
|
||
|
||
- **2026-10-01** - **The `services.html` red pen came back and both its edits landed; the same session turned `contact.html`'s subject field into a topic dropdown that sets the email subject.** The web-craft paragraph (hand-coding, WordPress, hosting, domain, maintenance) was **cut** from the offer block rather than kept folded in, so the offer column now runs eyebrow -> h2 -> promise -> three fact pills -> `Start a project` / `Not ready for a project?`; the meta and `og:description` rewrite **stayed**. In `contact.html` the free-text `Subject (optional)` input was replaced by a **required `<select name="subject">` labelled "What do you want to talk about?"**, with the options `Book a Project Clarity Session`, `Start a website project`, `Logo or brand identity`, `Print design`, `3D modeling`, `Writing, copy, or editing` and `Something else`, a disabled `Choose one` placeholder, and an `invalid-feedback` line to match the other required fields. The selected option becomes the Web3Forms email subject line. No JavaScript changed: `js/main.js` posts `new FormData(form)` and Web3Forms reads the `subject` field as the subject line (docs, "Email Subject line"; the field must be `name="subject"` and may be user-filled rather than hidden). Noted for later: the topic is consumed as the subject, so putting it in the message body too would need a duplicate field, and the field is now required (small friction the user did not explicitly ask for; reverting is dropping `required`). Verified: tag balance clean on all 16 pages, every reference resolves, no em/en dashes or curly quotes in our files, and headless-Firefox screenshots of `contact.html` at 1280px and 390px plus `services.html` at 1280px. **Uncommitted** (`services.html`, `contact.html`, `css/style.css`); no commit or push.
|
||
|
||
- **2026-10-01** - **Five funnel answers closed the offer, dropped the scheduling link, and removed a promise the site could not keep.** In one exchange the user settled: (1) **deposits and milestones are both stated** (offer-sheet item 9, the last open offer question), so `contact.html`'s Block D is unblocked and only the deposit percentage and the milestone split are still needed for its payments line; (2) the secondary path is **not a booking link** - a written enquiry is enough - so the **scheduling link is dropped** from `offer-draft.md`, `sales-funnel-plan.md` and `todo.md`, and the contact form's `Book a Project Clarity Session` option is the booking path instead (`services.html`'s `Book a Clarity Session` button already pointed at `contact.html`, so nothing needed rewiring); (3) **Umami will be self-hosted**, so the snippet and the `Start a project` conversion event stay pending rather than dropped; (4) the topic dropdown's options and phrasing are **approved as built**; and (5) **no email address is published** - "just make it contact us directly and use the form". Point 5 changed one production line: `js/main.js`'s submit-failure fallback said "or email us directly", a promise the site could not keep, so it now reads "Something went wrong and your message did not send. Please try again in a moment." That is the only string changed, and `js/main.js` parses clean under **gjs** (SpiderMonkey): `node` turned out **not** to be installed on this machine, so the `node --check` wording in older entries no longer applies and gjs is the substitute (documented in `techContext.md`). Also this session, a **reusable screenshot harness** was built and tested at `.shots/shoot.sh` with `.shots/trim.py`: headless Firefox on a throwaway profile inside the repo (this machine's Firefox is a snap, which cannot use /tmp), one command for any page and width, writing a fold shot plus a full-page shot trimmed to its real height. The two traps it encodes: Firefox captures exactly the `--window-size` box and does not scroll, so a "full page" shot must be taken tall and trimmed, and `--screenshot` needs an **absolute** path (a relative one is written elsewhere, silently, with exit code 0). Fresh shots (a fresh local server on port 8199) confirm the pages render: `services.html` 1280x1200 fold / 1280x3610 full and 390x844 fold / 390x5792 full, `contact.html` 1280x1200 / 1280x1564 and 390x844 / 390x1958. Proof permissions, case-study name confirmations, images and outcome numbers remain deferred by the user to a later session. **Uncommitted:** `services.html`, `contact.html`, `css/style.css`, `js/main.js` and the memory bank; `.shots/` is untracked scratch (now listed in `.gitignore`).
|
||
|