August 2026 UI/AI portfolio launch
The launch repositions the site around Tamara Gisele Mack — Creative Technologist (profession: principal and distinguished software engineer, and software architect) and the line:
Designing human-centered interfaces for systems that think, act, and create.
LIKWIDMACK remains the creative signature. The primary audience is hiring teams, with a secondary path for select product and creative-technology engagements.
Public information architecture
Primary navigation (AppPrimaryNav): Work → /work, About → /about, Gallery → /gallery, Writing → /blog, Code → /code.
Work sub-navigation (AppWorkSubNav on /work and /work/[slug], .page-nav chrome beside the Work body): Docs → /docs, AI Lab → /ai-lab, Process → /process.
/- positioning, six proof-led featured stories, working principles, contact/workand/work/[slug]- Media Systems, Innovation Prototyping, Human-Controlled AI Lab, Spatial Experiences, Data Visualization, and Experience Systems- Evidence examples dialog on
/workand each case study — Code / Data / Styles tabs with sanitized snippets from shipped surfaces (AppEvidenceExamplesDialog, catalog inshared/evidence-examples.ts) - Media rendering: rasters use
NuxtImg(IPX); SVGs useUiSvgImg(NuxtImg-shaped props → native<img>, IPX skipped) viaisSvgSrc() /about- background, resume, and portfolio-PDF downloads/gallery- social-style sample feed (filter + group; feed or grid)/blog- Writing editorial grid (statused essays + published notes)/code- editor/repos shelf plus a real-snippet browser (verbatim utilities from this repo, including MSE append serialization, AI Lab HMAC continuations, WCAG fill contrast, and the DNA helix study). Snippets live on thecodeContent collection (content/code.json→ Content SQLite via/api/content/code) assamples[]with inline comments; source is a line array so regex and template literals stay decoded. Repohrefvalues are#while the GitHub monorepo is private (anonymous 404); restore public URLs once access is verified. Language tags are precomputed in script (codeLanguageLabel) so Pug + script-setup does not drop the helper. Thecode(andwriting) collection must stay on the content API allowlist./docs- technical documentation catalog sourced from repodocs/markdown (Work sub-nav)/ai-lab- deterministic replay by default; optional server-side Responses API mode (Work sub-nav)/process- sanitized decision cards (Work sub-nav)/media-player,/product, and/styles- supporting demonstrations, outside the primary navigation
Case studies and decision cards are typed Nuxt Content collections in core/web/content.config.ts. The homepage stores featured case-study slugs, not embedded project copies.
Content and privacy rules
Public case studies live under core/web/content/case-studies/. Public decision cards live under core/web/content/decision-cards/ and must pass isPublicDecisionCard().
Only approved and sanitized cards may render. Do not publish:
- task identifiers or full transcripts;
- secrets or personal filesystem paths;
- private financial or business content;
- employer internals without recorded permission;
- repository evidence links until anonymous access is verified.
The private workbook at deliverables/private/August-2026-Portfolio-Launch-Tracker.xlsx records permissions, redactions, evidence, and publication state. .xlsx and .pptx files in that directory are intentionally ignored.
Human-Controlled AI Lab
The browser flow is goal -> plan -> approval or rejection -> result. A result is requested only after approval.
Replay mode is fully functional and requires no credentials. Optional live mode uses the OpenAI Responses API directly from Nitro with:
gpt-5.6-lunaby default;- strict JSON Schema outputs;
- read-only
lookup_ui_patternandfind_related_case_studytools; store: false, bounded output, and an eight-second request timeout;- a short-lived HMAC-signed continuation token with a one-time
jti(replay rejected on/complete); - an HMAC-signed anonymous quota cookie without prompt data (applied on both
/planand/complete); - server-generated RFC 4122 v4 IDs backed by Node
randomBytes, avoiding runtime-specificcrypto.randomUUIDsupport; - API Gateway route throttling;
- automatic replay for disabled mode, missing credentials, quota, timeout, malformed output, or browser network failure.
Cookie quotas are best-effort (cleared cookies reset the budget). Keep the OpenAI project spending cap set before enabling live mode.
Responsive layout contract
- Primary routes use native document scrolling and must not create horizontal page overflow at 320, 768, 1024, or 1440 pixels.
- The shared header becomes a two-row, horizontally scrollable navigation rail at tablet widths while preserving 44-pixel touch targets.
- Work and artifact grids move from three columns to two and then one; the AI Lab and decision journal collapse to a single reading column.
- On-page navigation becomes a compact horizontal rail on phones, and the About timeline uses a consistent left-to-right mobile layout.
- Display headings, media, code samples, dialogs, actions, and long content are constrained to the available viewport width.
Generated media curation
- The Innovation Prototyping story includes three human-directed Midjourney studies selected from the private VIMG archive: crystalline volume, cosmic network, and algorithmic helix.
- Public derivatives are resized WebP files with source metadata removed; original VIMG files remain untouched and outside the application.
- Each published study includes purpose-led alt text and an on-page caption that identifies the human-directed generative workflow.
- Personal photographs, identity documents, and unrelated VIMG experiments are excluded from the repository and public content.
- Two short AVC MP4 motion studies extend the same visual system: a crystalline binary helix and a recursive tesseract chamber.
- Video is user-controlled, muted, inline-capable, and configured with
preload="none"; static posters load before a visitor chooses playback. - Public clips use sanitized filenames and contain no identifying metadata strings found during the release review.
Environment contract:
SITE_URL=http://localhost:4200
OPENAI_MODEL=gpt-5.6-luna
AI_LAB_LIVE_ENABLED=0
OPENAI_API_KEY= # secret; never commit
AI_LAB_SIGNING_SECRET= # secret; never commit
The API key created for local development is stored only in the ignored worktree .env. Keep AI_LAB_LIVE_ENABLED=0 until the OpenAI project spending cap is set. Production uses GitHub Environment secrets and maps them to NoEcho SAM parameters.
Raw AI input is never accepted by the analytics adapter. Events are limited to work views, lab start/approval/completion, downloads, theme changes, resume downloads, and contact clicks.
Personalization and visual system
The launch stylesheet is core/web/assets/css/portfolio-launch.scss; theme defaults remain in the packaged theme. Personalize lives in the site footer (not primary nav) and extends the existing theme system with:
- light, system, and dark modes;
- ember and crimson warm accent families (legacy coral/cobalt/teal/violet/amber ids fall back to ember);
- system, playful, and reduced motion;
- local persistence using
tgmc-theme-mode,tgmc-accent, andtgmc-motion; - reset behavior and contrast-derived foreground/focus colors;
--portfolio-tealas a sparse signal (aligned with--success); brand roles stay--primary-color/--secondary-color/--accent-color. Teal controls: About Digital CV résumé download (.about-cv__resume), Gallery view/like stats, and Code language tags (.code-page__lang).
Pre-ember coral/ivory sources are archived at archive/v2/ (copy-back restore only; do not overwrite archive/v1). Do not describe the live brand as coral/ivory.
Shipped restyle surfaces:
- Home — fluid split hero (
data-fit="screen") with confined ambient video inside.home-hero__visual(not full-bleed); focus tags + view-all on featured work. - About — fixed sidebar Digital CV (
data-fit="prose") with portrait, stickyAppPageNavfrom$breakpoint-tabletup; teal résumé control (.about-cv__resume). - Gallery — social feed/grid; defaults to grid (YouTube / Shorts / Reels / Still platform tags; teal engagement stats; kind badge + category). Helpers bind in
<script setup>(gridTiles) — see gallery-and-docs.md. - Writing — primary label for
/blog; editorial shelf (content/writing.jsonessays +/api/postsnotes), not a flat “Notes” list. - Code — editor chrome + explorer/repos with teal language tags (
.code-page__lang) and a snippet browser of real repo utilities. - Work — case-study grid + evidence dialog; Related
AppWorkSubNavfor Docs / AI Lab / Process.
Title / Person JSON-LD: Principal UI/UX Software Engineer & Creative Technologist, Founder of HyperActivity.
Manhattan 2150 assets are in core/web/public/i/portfolio/. They are AI-assisted, creator-selected source assets prepared for optional Photoshop/Firefly cleanup. The August scope is one polished landscape proof scene and a six-shot storyboard; the full film and NVIDIA/local RTX workflow remain post-launch.
Deliverables
- Private tracker:
deliverables/private/August-2026-Portfolio-Launch-Tracker.xlsx - Private editable deck:
deliverables/private/Tamara-Mack-UI-AI-Portfolio-2026.pptx - Public PDF:
core/web/public/d/Tamara-Mack-UI-AI-Portfolio-2026.pdf
The tracker includes Dashboard, Roadmap, Content Inventory, AI Journal, and Launch QA sheets. The deck contains eight slides with editable objects and speaker-note sources. The public PDF is an eight-page 16:9 export.
Verification
From the repository root:
npm run lint
npm test
npm run build
npx nx run web:e2e
Acceptance also requires manual light/dark checks at theme breakpoints 480, 768, 1080, and 1440 px (hero stacks below standard; nav wraps), keyboard coverage of the AI Lab, reduced-motion review, working resume/PDF downloads, and Lighthouse scores of at least 90 for Performance, Accessibility, Best Practices, and SEO on Home, Work, and AI Lab.
Before production deployment:
- Set an exact HTTPS
SITE_URLand matchingCORS_ALLOW_ORIGINGitHub Environment variable. - Record employer publication permissions in Content Inventory.
- If live AI is enabled, add
OPENAI_API_KEYandAI_LAB_SIGNING_SECRETsecrets and confirm the project spending cap. - Deploy through the existing SAM workflow, sync CDN assets, and smoke-test Home, Work, AI Lab, downloads, and contact on the custom domain.
The production workflow fails closed when SITE_URL is not HTTPS, CORS is empty/wildcard, or live mode is requested without both secrets.