Skip to content

features/forge UI overhaul#93

Open
melvinchia3636 wants to merge 12 commits intomainfrom
features/forge-ui-overhaul
Open

features/forge UI overhaul#93
melvinchia3636 wants to merge 12 commits intomainfrom
features/forge-ui-overhaul

Conversation

@melvinchia3636
Copy link
Member

@melvinchia3636 melvinchia3636 commented Jan 31, 2026

Introduce Lifeforge UI Library (Tailwind Exit)

This PR introduces an enhanced version of the internal UI library for LifeForge. The intent is to gradually move away from Tailwind and replace it with a typed, token-driven, component-based styling system that we fully control.

Tailwind has served the project well in earlier stages, but as the codebase has grown, it has become increasingly difficult to enforce consistency. Styling decisions are now often embedded directly in JSX, visual intent is scattered across utility combinations, and small deviations accumulate into long-term design debt.

In addition, our current module federation setup has exposed practical limitations with Tailwind, particularly around shared configuration, style isolation, and predictable behavior across independently built modules. At this point, continuing to rely on utility-driven styling would require increasingly fragile workarounds. This PR addresses these issues at the foundation level rather than attempting to patch them incrementally.

The new UI library establishes a clear boundary between styling intent and implementation. It introduces typed design tokens backed by the existing CSS variable system and begins defining opinionated UI primitives. Styling is expected to flow through the system rather than around it. When an escape hatch is needed, style props is provided deliberately as an explicit and visible override rather than an invisible backdoor.

This PR performs a full migration of the existing Tailwind utility-first approach to fully endorse our own UI library. Tailwind will no longer be used by the migrated code paths as part of this change. As a result, this PR introduces significant breaking changes, both in styling behavior and in how UI components are authored and composed.

This migration is intentional and necessary. Given the architectural constraints introduced by our current module federation setup, continuing to rely on Tailwind would require increasingly fragile workarounds. Rather than maintaining two competing systems or attempting a partial transition, this PR completes the migration in a single, coherent step to establish a clear new baseline.

While the scope of this PR is large, consolidating the migration here avoids prolonged inconsistency and reduces long-term maintenance costs. Subsequent work can now build on a single, well-defined UI system without carrying legacy styling assumptions forward.

@github-actions
Copy link

github-actions bot commented Jan 31, 2026

🔨 Build Results

Backend Build: Failed (failure)
Frontend Build: Failed (failure)

⚠️ One or more builds failed. Please check the logs for details.

🔗 View full workflow run

@melvinchia3636 melvinchia3636 linked an issue Jan 31, 2026 that may be closed by this pull request
@lukashow lukashow added bug Something isn't working enhancement New feature or request labels Feb 1, 2026
@melvinchia3636 melvinchia3636 force-pushed the features/forge-ui-overhaul branch from fe2b0b8 to f8f43a8 Compare February 4, 2026 14:48
@vercel
Copy link

vercel bot commented Feb 4, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
lifeforge-ui Ignored Ignored Mar 10, 2026 3:57am

…o `Flex`, and expand design system tokens for spacing, radii, colors, and font sizes.
…itives` directory and add new primitives like Grid, Section, Container, and Slot.
@melvinchia3636 melvinchia3636 force-pushed the features/forge-ui-overhaul branch from f8f43a8 to ebf157d Compare February 4, 2026 14:52
voioo added a commit to voioo/lifeforge that referenced this pull request Feb 16, 2026
voioo added a commit to voioo/lifeforge that referenced this pull request Feb 16, 2026
- fix(bun.lock): restore all 24 apps that were accidentally removed
- fix(deps): add @vanilla-extract/vite-plugin to root dependencies
- fix(index.ts): replace dead code with proper CSS import
- fix(package.json): update keywords to reflect vanilla-extract migration
- fix(gha): use ubuntu-latest instead of custom blacksmith runners
- fix(gha): add continue-on-error for build steps during migration
- fix(gha): add push triggers for fork branches
- fix(gha): build shared packages before client build

The PR Lifeforge-app#93 bun.lock had accidentally removed 23 out of 24 apps during
bun update. This restores all apps while keeping the vanilla-extract
plugin addition.
voioo added a commit to voioo/lifeforge that referenced this pull request Feb 16, 2026
* feat(ui): introduce Flex component with a new Vanilla Extract-based design system and responsive utilities.

* feat(ui): enhance Flex component with new properties and add Text component

* feat:(ui) introduce `Slot` and `Box` primitives, add `asChild` prop to `Flex`, and expand design system tokens for spacing, radii, colors, and font sizes.

* feat(ui): reorganize primitive components into a new `components/primitives` directory and add new primitives like Grid, Section, Container, and Slot.

* feat(ui): migrate button and input components to use vanilla-extract for styling

* fix(pr-93): resolve issues with vanilla extract UI overhaul

- fix(bun.lock): restore all 24 apps that were accidentally removed
- fix(deps): add @vanilla-extract/vite-plugin to root dependencies
- fix(index.ts): replace dead code with proper CSS import
- fix(package.json): update keywords to reflect vanilla-extract migration
- fix(gha): use ubuntu-latest instead of custom blacksmith runners
- fix(gha): add continue-on-error for build steps during migration
- fix(gha): add push triggers for fork branches
- fix(gha): build shared packages before client build

The PR Lifeforge-app#93 bun.lock had accidentally removed 23 out of 24 apps during
bun update. This restores all apps while keeping the vanilla-extract
plugin addition.

* fix(ci): resolve build failures

- fix(deps): add missing @vanilla-extract/css dependency to root package.json
- fix(deps): add @vanilla-extract/css, recipes, sprinkles to UI package
- fix(ci): remove corrupted bun.lock before install to allow regeneration
- fix(ci): update both backend and frontend install steps

The CI was failing because:
1. bun.lock was manually edited and corrupted
2. Missing vanilla-extract core dependencies in package.json files

Now the workflow will regenerate bun.lock fresh during install.

* feat(docker): add docker build workflow and test scripts

- ci(docker): create GitHub Actions workflow to build and push images to GHCR
- ci(docker): build server, client, and db images with caching
- feat(docker): add docker-compose.images.yaml for testing pre-built images
- feat(scripts): add test-docker-images.sh for easy local testing
- docs(docker): tag images with branch, PR, semver, and SHA

Usage:
  1. Workflow auto-builds on push to main, PRs, and tags
  2. Pull images: docker pull ghcr.io/voioo/lifeforge-server:pr-93-review
  3. Test locally: ./scripts/test-docker-images.sh pr-93-review
  4. Or use: docker-compose -f docker-compose.images.yaml up

* feat(docker): improve testing workflow with environment variables

- feat(docker-compose): use LIFEFORGE_TAG env var for flexible image selection
- feat(script): default to 'main' tag instead of hardcoded pr-93-review
- feat(script): add helpful commands and version switching examples
- ci(docker): add concurrency control to prevent simultaneous builds
- docs(compose): add comprehensive usage examples in comments

Now you can easily test different versions:
  LIFEFORGE_TAG=main docker-compose -f docker-compose.images.yaml up
  LIFEFORGE_TAG=pr-93-review docker-compose -f docker-compose.images.yaml up
  ./scripts/test-docker-images.sh main

---------

Co-authored-by: melvinchia3636 <melvinchia623600@gmail.com>
Co-authored-by: jtws85 <jtws85@gmail.com>
voioo added a commit to voioo/lifeforge that referenced this pull request Feb 16, 2026
- Remove corrupted bun.lock before install to ensure clean dependency resolution
- Use standard bun install instead of --linker isolated
- Add lifeforge-ui package build (required for PR Lifeforge-app#93)
- Add better comments for build order dependencies

Fixes: server build was failing with 'bun run build' exit code 1 due to
workspace dependency resolution issues with the corrupted lockfile.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[CRITICAL/URGENT] - CSS in Module Conflicts with Core CSS

3 participants