Skip to content

D2.5: web10-social UI makeover — tailwind v4 + Radix, M0 screens (1.0.51)#111

Merged
jacoby149 merged 2 commits into
devfrom
jacoby149/d25-web10-social-ui
Jul 19, 2026
Merged

D2.5: web10-social UI makeover — tailwind v4 + Radix, M0 screens (1.0.51)#111
jacoby149 merged 2 commits into
devfrom
jacoby149/d25-web10-social-ui

Conversation

@jacoby149

Copy link
Copy Markdown
Owner

D2.5: web10-social UI makeover

Replaced rectangles-npm and @chatscope with Tailwind CSS v4 + Radix UI primitives + Lucide icons. Built M0-facing screens on top of the D4 data layer:

  • Feed — chronological list with sort dropdown (newest/oldest/most_reacted)
  • Profile — display name, avatar upload, bio, post/media grid
  • DMs — conversation list + message thread, records-based
  • Post Composer — text input + photo upload via presigned URLs
  • Empty states — all point at exporters ("Import your Instagram")
  • Layout — responsive sidebar (desktop) + bottom nav (mobile)
  • 12 new component tests (226 total green, 4 legacy skipped)

Stack pick recorded in decisions.md (D2.5-stack). plan.txt and parallel execution.txt ticked.

@jacoby149
jacoby149 merged commit 3af5bd6 into dev Jul 19, 2026
6 of 7 checks passed
jacoby149 added a commit that referenced this pull request Jul 19, 2026
* restructure: create marketing/ folder for marketing-api, marketing-ui, web10-cli, web10-social (#91)

Group all accessibility + growth surfaces under marketing/. Update all path
references in CI workflows, validation.py, CLAUDE.md, decisions.md, plan.txt,
and parallel execution.txt.

* Board sync fixes, CI board-sync guard, and whole-repo CI/CD repair (#93)

* Fix plan/parallel-execution drift vs changelog; add ci board-sync guard

Tick C1 (1.0.25) and D3 (1.0.27), refresh wave-0 status and the
conductor board, tick the shipped cd items, correct phase 7 crm/mail
wording and lane C ownership, refresh CLAUDE.md stack section.
changelog.yml gains a board-sync step: version monotonicity (error) +
lane-tick reminder (warning, visibility-first).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Repair ci/cd so every test suite in the repo runs and reports

js-ci: add marketing-ui + encryptor jobs, drop dead exporters job,
commit sdk/marketing-ui bun.lock (sdk job died at install), remove
continue-on-error from tests. New marketing-api workflow (uv+ruff+
pytest, smoke tests); ruff caught two real bugs (missing
BackgroundTasks param, missing find_json_entries import) — fixed.
docker/cd matrices rebuilt on real Dockerfiles; media.yml deleted.
marketing-ui type errors fixed (vite-env.d.ts, ImportProgress).
.gitignore rewritten; ui/dist, mobile/.expo, node_modules untracked.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* Add Proxmox deployment plan + ubuntu-deploy script (#94)

* Add Proxmox deployment plan, LANE E, and ubuntu-deployment script

- plan.txt: new CROSS-CUTTING deployment section for Proxmox homelab
  (staging node, marketing sites, caddy reverse proxy, provisioning)
- parallel execution.txt: new LANE E for infrastructure/deployment
- ubuntu-deployment/: one-shot deploy script (Docker, Caddy, web10 node,
  marketing) + README with VM creation instructions
- .gitignore: added .env (proxmox creds)

* fix(ci): fetch full history so changelog check can diff against base

* chore: add changelog entry for ubuntu-deployment + LANE E

* A2: rename mongo.py -> documentdb.py + docker-compose update (#95)

Adapter renamed from mongo.py to documentdb.py — the module is backend-agnostic
(pymongo speaks to either real Mongo or FerretDB/DocumentDB). All imports, test
files, and patch paths updated. Test files renamed to test_documentdb*.py.
Docker-compose updated with FerretDB/DocumentDB default, real Mongo as profile.
235 tests green.

* E2: marketing deploy — Dockerfile, compose, deploy script (#96)

* E2: marketing deploy — Dockerfile, compose, and deploy script

- marketing-api/Dockerfile: multi-stage python 3.12 + uv + uvicorn
- docker-compose.marketing.yml: standalone compose for marketing-ui +
  marketing-api
- ubuntu-deploy.sh: full marketing service setup (compose copy, path
  fixup, Caddy proxy with separate RTC subdomain, auto build+start)

* Tick E2 in CHANGELOG, plan, and parallel execution

* setup wizard + admin config screen (A3/B3/B4) (#97)

API: /ready, /setup, /config endpoints; config persistence service; JWT key generation; admin creation
UI: 6-step setup wizard; admin config panel for all node settings; auto-detect unconfigured nodes
Models: SetupRequest, SetupStatus, ConfigUpdate, NodeConfig schemas

* Wave 0: endpoint-level permission-matrix suite (45 tests) (#98)

* A2: rename mongo.py -> documentdb.py + docker-compose update

Adapter renamed from mongo.py to documentdb.py — the module is backend-agnostic
(pymongo speaks to either real Mongo or FerretDB/DocumentDB). All imports, test
files, and patch paths updated. Test files renamed to test_documentdb*.py.
Docker-compose updated with FerretDB/DocumentDB default, real Mongo as profile.
235 tests green.

* wave 0: endpoint-level permission-matrix suite (45 tests)

45 new endpoint tests through FastAPI TestClient covering auth flows,
CRUD routes, aggregate, star protection (I3), forged-token rejection
(I1), scoped-token enforcement (I5), metering/billing, certify, and
system endpoints. 280 total api tests green.

Also adds a bare exception handler in main.py that maps legacy
Exception('TOKEN') etc. to proper HTTP 401s, a JWT PyJWTError handler
for forged/expired tokens, and fixes a models.dotdict -> dotdict bug
in documentdb.py.

* Add PR-to-dev rule to AGENTS.md

* Re-plan lens chatbox LLM backing: BYOK-only, phone-wallet key (D19) (#101)

Phase 8 llm-backing item flipped from operator-pays-by-default to
bring-your-own-key only: v1 key stays client-side (browser -> provider
direct), presets need zero LLM, node-provided inference demoted to a
capped operator opt-in. Phase 11 wallet gains an opaque-secrets item:
the phone beams the e2e-encrypted LLM key to the apps the user picks.
New decisions.md entry D19; CHANGELOG 1.0.41.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* D20/D21 strategy pivot: creator-first plan, business plan, sales kit, timeline (#102)

Refactor plan.txt around the creator proposition (own your audience,
no shadow ban by architecture): THE STORY + THE RISE, M0 redefined as
"stands on its own" (chronological feed + sort dropdown + the Studio
money screen), lens/chatbox cut to later.md, rule-of-100 kill test.
New docs: business-plan.md (real numbers, breakeven ~5 creators),
outreach.md (sales kit), manifesto.md (fan join page), timeline.md
(10-week M0→M2 schedule). D20+D21 in decisions.md; boards, glossary,
CLAUDE.md kept true. CHANGELOG 1.0.42–1.0.46.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* Refresh conductor board for D20/D21 pivot + timeline week 0 (1.0.47) (#104)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* Spec UI stability plan: e2e suite, feedback loop, ux telemetry (1.0.48) (#105)

Expands the thin playwright line in plan.txt into a full browser-e2e
item (playwright-in-docker vs the compose stack, ~6-10 smoke journeys
across ui/social/marketing-ui), records the marketing-ui zero-test and
js-workflow continue-on-error gaps, adds a report-a-bug loop and a
privacy-split ux telemetry item, and puts C5/D10/D11 on the lane board.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* 1.0.48: wave-0 security fixes — CORS, bare excepts, provider URL SSRF guard (#107)

* 1.0.48: wave-0 security fixes — CORS, bare excepts, provider URL SSRF guard

* fix: preserve port/path in provider URL validation; simplify twilio except

* D4: web10-social data layer — conventions-schema stack for M0 (#108)

* D4: web10-social data layer — conventions-schema stack for M0 killer app slice

- src/data/: typed modules for posts, feed, profile, contacts, dms,
  comments, reactions, media upload via API presigned URLs
- src/data/wapi.ts: thin typed fetch wrapper over legacy wapi.js
- Web10SocialAdapter wired with 30+ new data-layer methods (backward compat)
- SMR terms extended for profile, contacts, inbox, comments, reactions, media
- 55 new vitest tests (227 total, all green)
- Screens deferred to D2.5 post-B2.5 tokens

* fix: remove stray leftover lines from D4 lane tick in parallel execution.txt

* 1.0.51: CLAUDE.md hand-off convention — agents end merges with next lane item + paste-ready kickoff (#110)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

* B2.5: ui makeover — rectangles-npm out, Tailwind CSS + design tokens in (#109)

* D22: record stack pick — Tailwind CSS + shadcn/ui replaces rectangles-npm

* B2.5: ui makeover — rectangles-npm out, Tailwind CSS + design tokens in

- D22 recorded in decisions.md (Tailwind CSS + shadcn/ui pick)
- rectangles-npm and react-bulma-components dropped from package.json
- Design token layer: ui/src/styles/tokens.css (color, type, spacing,
  radius, dark mode, CSS custom properties for creator theming)
- All ui/ screens restyled on Tailwind: login/signup/forgot, contracts,
  requests, settings, setup wizard, config page
- Shared components (SideBar, TopBar, Icon, Branding) rewritten
- Card pattern replaces Bulma cards; form inputs use consistent
  rounded inputs with icon prefixes
- Old rectangles CSS (index.css, Components.css, bulma.min.css) removed
- 43/43 vitest tests green

* fix: CredentialPage stale rectangles import, CHANGELOG version order, Docker build type errors

- Remove leftover 'import { R } from rectangles-npm' in CredentialPage.tsx
- Swap CHANGELOG versions: B2.5 entry is now 1.0.49 (unique highest),
  dev plan entry demoted to 1.0.48 — fixes changelog CI check
- Add vite-env.d.ts with ambient module declarations for CSS imports
  from node_modules (react-phone-input-2, @chatscope)
- Fix @import path for tokens.css in index.css (./styles/tokens.css)
- MockMedia: replace missing asset imports with string paths
- Update parallel execution.txt B2.5 tick to 1.0.49

* outreach batch 1: 20-slot prospect list template + opener templates (#106)

* outreach batch 1 template: 20-slot prospect list with opener templates, sourcing queries, 3 pre-fill candidates

* outreach batch 1 enriched: 5 Gemini pre-fills, 15 template slots, 3 excluded out-of-band

* outreach batch 1: 20 API-verified prospects via YouTube Data API

- outreach_sourcer.py: YouTube API v3 sourcer with burn validation,
  quota tracking, false-positive filtering (1,087u used, 11% free tier)
- 20 prospects fully enriched: verified subs, gap %, burn events with
  URLs, M0 fit assessment, personalized openers
- 5 prospects have biz emails (TSO_Sage, Shijo p Abraham, 8sxope,
  Monkey Economics, Spooky Scary Socialist)
- 6 false positives filtered (gaming shadowbans, advice videos,
  third-party references)
- segment split: 3 right-coded, 2 left-coded, 15 wildcard

* outreach: fix M0 fit logic + rebuild batch 1 list

- M0 fit now uses signal-based scoring (YES/POOR/PARTIAL) instead of
  broken binary check that classified everything as PARTIAL
- 10 YES fits (recipes, crafts, tutorials, fashion, finance, podcasts,
  nutrition, fitness), 4 PARTIAL, 3 POOR (animation, cinematic, vlogs)
- 2 slots open for right-coded M0-YES prospects (need X/Twitter search)
- outreach_sourcer.py: added M0_YES_SIGNALS/M0_POOR_SIGNALS scoring

* chore: add raw full outreach prospects output

* D2.5: web10-social UI makeover — tailwind v4 + Radix, M0 screens on D4 data layer (1.0.51) (#111)

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant