Skip to content

v0.10.0: Buildings infrastructure rollout + guided onboarding + CI/release hardening#82

Merged
BENZOOgataga merged 51 commits intomainfrom
canary
Feb 22, 2026
Merged

v0.10.0: Buildings infrastructure rollout + guided onboarding + CI/release hardening#82
BENZOOgataga merged 51 commits intomainfrom
canary

Conversation

@BENZOOgataga
Copy link
Member

@BENZOOgataga BENZOOgataga commented Feb 22, 2026

PR: Canary Integration Batch

Range

  • Base: 45eed6e53abc53f7288b2724a501653d37567f43
  • Head: fd42e371860aa04df47f4c37420a61261022a358
  • Total diff: 124 files changed, 7113 insertions(+), 978 deletions(-)
  • Includes merge commit: fd42e37 Merge branch 'main' into canary

Summary

This range delivers the Buildings Phase 1-5 stack (simulation + API + web), migrates auth/web routing toward single-origin SSO-safe behavior, hardens CI and local dev startup reliability, and adds major UX upgrades (guided tutorial, better feedback toasts, clearer market/catalog visibility, and UI polish).

What Changed

Buildings and Simulation (Phase 1-5)

  • Added complete buildings backend surface:
    • apps/api/src/buildings/buildings.controller.ts
    • apps/api/src/buildings/buildings.service.ts
    • DTOs under apps/api/src/buildings/dto/*
  • Added simulation building domain logic:
    • packages/sim/src/services/buildings.ts
    • Integration into tick/services paths (production, shipments, tick-engine, market-matching)
  • Added DB migrations:
    • packages/db/prisma/migrations/20260218155056_add_building_infrastructure/migration.sql
    • packages/db/prisma/migrations/20260219133500_add_workshop_building_type/migration.sql
  • Added/updated tests for buildings/storage/liquidity behavior.

Web: Buildings, Tutorial, UX, and Feedback

  • Added Buildings page and components:
    • apps/web/app/buildings/page.tsx
    • apps/web/src/components/buildings/*
  • Added guided tutorial system and dynamic overlay:
    • apps/web/src/components/tutorial/guided-tutorial-overlay.tsx
    • apps/web/src/components/tutorial/guided-tutorial-steps.ts
    • apps/web/app/tutorial/page.tsx
  • Improved player feedback and clarity:
    • Completion/feedback toasts and onboarding UX adjustments
    • Item quantity rendering utilities (item-quantity-label, item-quantity-list)
    • Overview wording/time clarity and alpha disclaimers
  • Navigation evolution:
    • Buildings surfaced in nav
    • Workforce route redirected toward Buildings in canary path

Market, Catalog, and Admin/Dev Tooling

  • Market lists now scoped to active company tradable items.
  • Unknown item label handling fixed via global item metadata paths.
  • Admin/developer catalog access expanded for admin use cases.
  • Research catalog access and parser behavior hardened (including redacted cash handling).

Auth and Request Routing

  • Single-origin auth and proxy routing improvements:
    • apps/web/app/api/auth/[[...path]]/route.ts
    • apps/web/app/v1/[...path]/route.ts
    • apps/web/src/lib/auth-client.ts
    • apps/web/src/lib/api-client.ts
    • apps/api/src/lib/auth.ts
  • OAuth callback and deployment doc guidance updated for routing consistency.

CI and Dev Reliability

  • CI release workflow restricted to main branch (.github/workflows/release.yml).
  • Startup/migration behavior adjusted for multi-role startup (scripts/start-container.sh).
  • Root typecheck/build regressions fixed (including Next.js suspense/search params build issue).
  • Prisma generate hardening for Windows/local parallel dev:
    • scripts/prisma-generate.mjs lock/retry robustness
    • scripts/prisma-generate-raw.mjs
    • packages/db/package.json generate raw path changes

API/Web Compatibility Follow-ups

  • Buildings definitions response parsing corrected and made backward compatible:
    • apps/web/src/lib/api.ts
  • Supports both array and legacy object-shaped definitions payloads.

Documentation

  • AGENTS/design and Dokploy/nginx deployment docs updated for current behavior.
  • Multiple release entries added under .releases/unreleased/.

Operational Notes

  • Schema compatibility is branch-sensitive in this range.
  • Running main code against a DB migrated with canary-only migrations can trigger readiness 503 on /v1/* (including onboarding status).
  • Recommended: keep code branch, migrations, and running services aligned.

Validation Focus for Review

  • Buildings end-to-end flow:
    • Acquire/reactivate building
    • Storage/capacity calculations
    • Preflight checks for production and market buy orders
  • Guided tutorial flow:
    • Tutorial entry, overlay progression, onboarding completion state transitions
  • Auth and proxy paths:
    • /api/auth/* and /v1/* behavior in same-origin deployment
  • CI/dev startup:
    • release.yml branch gating
    • Container startup migration behavior
    • Prisma generate behavior on Windows with concurrent dev scripts

Copilot AI and others added 30 commits February 18, 2026 14:00
* Initial plan

* Fix postcss vulnerability by upgrading to 8.5.6

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* Update postcss override to target 8.5.6 to eliminate dual versions

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* Standardize on postcss 8.4.49 to fix CVE and eliminate version conflicts

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>
…ion feedback (#73)

* Initial plan

* Fix prefilled form fields, add tick countdown, improve workforce UI explanations

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* Add toast notifications for research and production completion

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* Fix TypeScript errors in toast notifications

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* Add release entry for UX improvements

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* Remove prefilled allocation percentages from workforce page initial state

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* Fix capacity delta input reset to empty string after submission

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* Apply code review feedback: improve accessibility, fix countdown boundary, deduplicate toast recipes

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* Update design guidelines documentation with new UX patterns

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>
* Initial plan

* feat(sim): add building infrastructure domain layer with Prisma schema and tests

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* chore: add release entry for building infrastructure phase 1

* feat(sim): integrate building operating costs into tick pipeline

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* fix(sim): fix stale cash bug and reserved cash invariant in building operating costs

- Fetch fresh company data for each building to avoid stale cash values when processing multiple buildings
- Use availableCash() to respect reservedCashCents when checking affordability
- Update AGENTS.md to reflect new 11-stage tick pipeline
- Add tests for reserved cash respect and multi-building scenarios

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* refactor(sim): improve building service types and documentation clarity

- Remove `any` return types, let TypeScript infer from Prisma
- Clarify which invariants are enforced vs planned in module docs
- Add note in tick-engine that production validation doesn't check building status yet (Phase 2)
- Update building service docs to separate current vs future features

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* fix(shared): add new building ledger entry types to FinanceLedgerEntryType

- Add BUILDING_OPERATING_COST and BUILDING_ACQUISITION to shared API types
- Fixes TypeScript compilation errors in finance controller and service
- All 53 tests passing

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* fix(sim): remove explicit any type in building tests to pass linter

- Replace `{} as any` with `{} as Prisma.TransactionClient`
- Fixes ESLint error: @typescript-eslint/no-explicit-any
- All tests passing, TypeScript compilation successful

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>
…iguration (#77)

* Initial plan

* feat: Add nginx proxy rule for OAuth callbacks on web domain

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* docs: Update deployment docs and env example for OAuth callback configuration

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* docs: Add deployment guide for OAuth callback redirect URL fix

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* fix: Address PR review feedback - update release area, nginx comments, and use RFC 5737 IP ranges

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>
…irements (#78)

* Initial plan

* feat: implement storage capacity system and building validation

- Add BASE_STORAGE_CAPACITY_PER_REGION and WAREHOUSE_CAPACITY_PER_SLOT constants
- Implement calculateRegionalStorageCapacity function
- Implement validateStorageCapacity function to check inventory limits
- Integrate storage validation in production completions
- Integrate storage validation in market settlement
- Integrate storage validation in shipment deliveries
- Add validateProductionBuildingAvailable function
- Integrate building validation in production job creation
- Update tick-engine JSDoc with Phase 3 validation notes
- Add comprehensive tests for storage capacity system
- Add tests for production building validation

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* fix: remove unused imports in storage.test.ts

* fix: resolve storage validation race conditions and bot production

- Move storage validation BEFORE inventory mutations in production
- Move storage validation BEFORE inventory mutations in market settlement
- Only validate production buildings for player companies (bots exempt)
- Prevents batch processing race condition where multiple operations in same tick could exceed capacity

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* fix: account for net inventory change in production storage validation

- Calculate net inventory change (outputs - inputs consumed)
- Only validate storage if net change is positive
- Update documentation to accurately reflect validation behavior
- Addresses bot reviewer feedback on production capacity logic

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* fix: skip storage validation for self-trades in market settlement

- Self-trades (same company, region, and item) have net zero inventory change
- Skip storage capacity validation when buyer and seller are the same entity
- Prevents false positive rejections when company at capacity trades with itself
- Addresses bot reviewer feedback on self-trade edge case

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* fix: add warehouse to market-candles test to ensure storage capacity

- Test was failing because buyer company lacked sufficient storage capacity
- Added warehouse to buyer company in test setup
- Warehouse increases capacity by 500 units (base 1000 + warehouse 500 = 1500 total)
- Ensures trade settlement doesn't hit storage limit validation

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* fix: add production building and warehouse to seeded player company

- Player company now gets a FACTORY (5 capacity slots) for production jobs
- Player company now gets a WAREHOUSE (500 capacity) to handle 1088 units of starting inventory
- Total capacity: 1000 (base) + 500 (warehouse) = 1500 units
- Removes need for per-test warehouse setup in market-candles test
- Fixes all integration tests that rely on player company having buildings

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* refactor: reduce starting inventory and remove free warehouse

- Reduced player starting inventory from 1088 to 885 units (fits in base 1000 capacity)
- Removed free warehouse to avoid giving players buildings with upkeep costs
- Keep FACTORY for production capability (no operating cost in seed)
- Starting inventory breakdown:
  * ironOre: 240 → 200
  * coal: 140 → 120
  * copperOre: 180 → 150
  * water: 200 → 150
  * fertilizer: 150 → 120
  * bioSubstrate: 160 → 130
  * ironIngot: 12 → 10
  * copperIngot: 6 → 5

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>
…nistic Overflow Policy + Stuck Shipment Indicator (#79)

* Initial plan

* feat(api): add buildings API with preflight validation

- Add BuildingsController with endpoints for listing, acquiring, and reactivating buildings
- Add preflight validation endpoints for production jobs and buy orders
- Add storage and capacity info endpoints
- Add building type definitions with costs (Phase 5 balance pass)
- Add building-related types to shared package
- Register buildings module in app.module.ts

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* feat(web): add buildings API client functions

- Add building-related parsers to api-parsers
- Add buildings API functions to api client
- Add support for listing, acquiring, and reactivating buildings
- Add preflight validation API calls
- Add storage and capacity info API calls

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* feat(web): add Buildings page and UI components

- Add Buildings page with region/category grouping
- Add building status display with badges
- Add Acquire Building dialog with cost preview
- Add reactivate building functionality
- Add Storage Meter component for capacity visualization
- Add missing UI components (Dialog, Label, Progress)
- Install required radix-ui packages

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* chore: add release entry for Phase 4 & 5 implementation

* fix: remove unused imports in buildings service

* feat(sim): implement deterministic overflow policy for shipments

CRITICAL FIX: Shipment delivery now returns to sender when destination storage is full, preventing tick blocking.

**Overflow Strategy: Return to Sender**

When shipment arrives but destination storage is full:
- Shipment marked as DELIVERED (not failed)
- Inventory returned to origin region (fromRegionId)
- No error thrown (prevents tick advancement failures)
- Deterministic behavior - always returns, never partial
- Player consequence: wasted logistics fee

**Changes:**
- packages/sim/src/services/shipments.ts:
  - deliverDueShipmentsForTick() now returns {deliveredCount, returnedCount}
  - Catches storage capacity errors and returns to sender
  - Updated JSDoc with comprehensive overflow policy documentation

**Prevents Soft-Lock:**
- Tick processing never fails due to player storage mismanagement
- Multi-operation storage contention handled deterministically
- Same-tick shipments processed in arrival order (ASC)

All 64 existing tests passing.

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* docs: add comprehensive overflow policy and economic analysis

Complete documentation covering:
- Deterministic overflow policy (reject at source + return to sender)
- Multi-operation storage contention handling
- Soft-lock prevention strategy
- Economic balance analysis with break-even calculations
- Early game viability assessment
- Over-expansion risk scenarios
- Integration test coverage plan

Key Findings:
- Current building costs too high for absolute beginners
- Recommend adding $25k Workshop tier
- MegaFactory dangerous if purchased too early (bankruptcy risk)
- Production failure behavior needs design decision (lose inputs vs return)

All quality gates passing:
- ✅ 64/64 tests
- ✅ TypeScript compilation
- ✅ ESLint

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* feat: add WORKSHOP building tier and improve overflow policy

**Workshop Building Tier ($25k Entry-Level):**
- Acquisition: $25,000 (vs $80k for Farm)
- Weekly cost: $1,500 (vs $4k for Farm)
- Capacity: 1 slot
- Purpose: True early-game viability

**Overflow Policy Enhancements:**
- Origin storage validation SKIPPED for returns (prevents deadlock)
- Rationale: Items were already at origin - bounded violation acceptable
- Origin may temporarily exceed capacity but self-corrects
- Deterministic: Same inputs → same outputs
- Idempotent: updateMany prevents double-processing
- Atomic: Single transaction, no partial state
- No ledger entry on return (fee already paid at creation)

**Changes:**
- packages/db/prisma/schema.prisma: Add WORKSHOP to BuildingType enum
- packages/shared/src/api-types.ts: Add WORKSHOP to type union
- packages/sim/src/services/buildings.ts: Include WORKSHOP in production building types
- packages/sim/src/services/shipments.ts: Enhanced overflow documentation
- apps/api/src/buildings/buildings.service.ts: Add WORKSHOP definition and include in preflight

**Quality:**
- All 64 tests passing
- TypeScript compilation passing
- ESLint passing

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* fix: maintain hard storage caps and use deterministic ordering

BREAKING CHANGES to overflow policy per reviewer feedback:

**1. Hard Storage Caps Maintained:**
- Origin capacity NOW VALIDATED on rollback (was bypassed)
- No bounded violation - all regions respect capacity limits
- If both origin and destination full, delivery FAILS
- This is acceptable - player made storage management error

**2. Delivery Rollback Semantics:**
- Clarified: This is a ROLLBACK, not a logistics return
- No new shipment created, no additional travel time
- Status: DELIVERED (completed, even if rolled back)
- Player penalty: wasted fee + time

**3. Deterministic Ordering:**
- Changed from createdAt (wall-clock) to tickCreated (deterministic)
- Guarantees same order on replay: ORDER BY tickArrives ASC, tickCreated ASC
- Location: packages/sim/src/services/shipments.ts:674

**Changes:**
- packages/sim/src/services/shipments.ts:
  - Add origin capacity validation on rollback (line 730-736)
  - Use tickCreated instead of createdAt for ordering
  - Comprehensive JSDoc updates explaining rollback vs return
  - Hard cap invariants maintained everywhere
- docs/overflow-policy-and-economics.md:
  - Updated to reflect rollback semantics
  - Clarified deterministic ordering with tickCreated
  - Documented edge case (both regions full)

**Rationale:**
- Hard caps are invariants - no bypass allowed
- Edge case failure acceptable (player must manage both regions)
- Simpler than overflow bucket (no quarantine system needed)
- Deterministic ordering critical for replay

All 64 tests passing.

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* fix: ensure tick never fails - retry shipments when both regions full

CRITICAL FIX: Tick advancement can never be blocked by storage overflow.

**Problem:** Previous implementation threw error if both origin and destination were full, blocking tick advancement.

**Solution:** Three-tier delivery fallback:
1. Destination has capacity → Normal delivery
2. Destination full, origin has capacity → Rollback to origin (DELIVERED status)
3. Both regions full → Keep IN_TRANSIT, retry next tick (tick continues)

**Changes:**
- packages/sim/src/services/shipments.ts:
  - Moved status update AFTER capacity validation (line 746-756)
  - Only update to DELIVERED if delivery succeeds
  - If both regions full: shipment stays IN_TRANSIT, no throw
  - Comprehensive JSDoc explaining three-tier fallback
  - Line 733: Catch origin validation error, set shouldDeliver=false

- docs/overflow-policy-and-economics.md:
  - Updated to document three-tier delivery outcomes
  - Clarified tick never fails guarantee
  - Documented retry mechanism for double-full scenario

**Guarantees:**
✅ Tick advancement NEVER fails due to storage
✅ Hard storage caps maintained (no bypass)
✅ Deterministic retry behavior
✅ Player gets clear feedback (shipment stays IN_TRANSIT until space available)

**Edge Case Handling:**
- Both regions full → shipment retries automatically next tick
- Player must clear space in EITHER region for delivery
- No soft-lock possible

All 64 tests passing.

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* refactor: extract production building types constant and fix type safety

Address code review feedback:
1. Extract PRODUCTION_BUILDING_TYPES as shared constant (eliminates duplication)
2. Fix type safety: use `as BuildingType` instead of `as any` in acquire dialog

**Changes:**
- packages/sim/src/services/buildings.ts:
  - Add PRODUCTION_BUILDING_TYPES export (line 89-97)
  - Use constant in getProductionCapacityForCompany (line 513)
  - Use constant in assertHasActiveProductionBuilding (line 649)

- apps/api/src/buildings/buildings.service.ts:
  - Import PRODUCTION_BUILDING_TYPES (line 19)
  - Use constant in preflightProductionJob (line 337)

- apps/web/src/components/buildings/acquire-building-dialog.tsx:
  - Import BuildingType from api (line 25)
  - Fix type assertion: as BuildingType (line 90)

**Benefits:**
- Single source of truth for production building types
- Easier maintenance (add/remove building types in one place)
- Better type safety (no `as any` bypass)
- Consistent across API and sim layers

All 64 tests passing, typecheck and lint passing.

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* fix: add database migration for WORKSHOP building type

CRITICAL FIX: Database enum missing WORKSHOP value causing 500 errors.

**Problem:** Added WORKSHOP to TypeScript code and Prisma schema, but database enum wasn't updated via migration.

**Error:**
```
invalid input value for enum "BuildingType": "WORKSHOP"
```

**Solution:** Create migration to add WORKSHOP to BuildingType enum in PostgreSQL.

**Migration:** packages/db/prisma/migrations/20260219133500_add_workshop_building_type/migration.sql
- Adds WORKSHOP value to BuildingType enum
- Required for integration tests to pass
- Safe to apply (enum extension, no data migration needed)

Integration tests will pass once migration is applied to test database.

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* refactor: apply code review suggestions

Address copilot-pull-request-reviewer feedback:

1. Remove trailing blank lines in api-parsers.ts
2. Simplify listBuildings controller - pass query DTO directly
3. Wrap building definitions response for API consistency

**Changes:**
- apps/web/src/lib/api-parsers.ts: Remove trailing whitespace
- apps/api/src/buildings/buildings.controller.ts:
  - Pass query DTO directly to listBuildings (no redundant object)
  - Wrap definitions in { definitions: [...] } for consistency

**Note:** Bot comment about tickCreated field is incorrect - field exists in schema at line 290.

All changes are code quality improvements with no functional impact.

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

* feat: add stuck shipment UI indicator with storage management link

Implement real-time visual feedback for stuck shipments (IN_TRANSIT past ETA).

**Changes:**
- apps/web/src/components/logistics/logistics-page.tsx:
  - Added Badge and Link imports
  - Detect stuck shipments: tickArrives < currentTick
  - Display warning badge with tooltip on stuck shipments
  - Add "Manage Storage" button linking to /buildings page
  - Tooltip: "Waiting for storage capacity in destination or origin region"

**UX Improvements:**
- Clear visual indicator (amber warning badge) when shipment can't deliver
- Actionable "Manage Storage" button for direct navigation to Buildings page
- Tooltip explains retry behavior (waiting for capacity)
- Prevents player confusion about stuck shipments

**Implementation Details:**
- Uses existing Badge component with "warning" variant
- Conditionally renders badge only when isStuck = true
- Adds direct link to Buildings page for capacity management
- Maintains existing Cancel button functionality

No breaking changes. Pure UX enhancement.

Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: BENZOOgataga <50145143+BENZOOgataga@users.noreply.github.com>
@greptile-apps
Copy link

greptile-apps bot commented Feb 22, 2026

Too many files changed for review. (112 files found, 100 file limit)

@BENZOOgataga BENZOOgataga merged commit d6bcdf7 into main Feb 22, 2026
5 checks passed
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.

2 participants