Skip to content

Flatten monorepo structure with new features and docs#1885

Merged
bpamiri merged 14 commits intodevelopfrom
claude/reorganize-monorepo-structure-qNFcv
Feb 21, 2026
Merged

Flatten monorepo structure with new features and docs#1885
bpamiri merged 14 commits intodevelopfrom
claude/reorganize-monorepo-structure-qNFcv

Conversation

@bpamiri
Copy link
Collaborator

@bpamiri bpamiri commented Feb 21, 2026

Summary

  • Flatten monorepo from core/src/ to vendor/ for clone-and-run development workflow
  • Implement nested routes, HTML5 form helpers, job queue, and Server-Sent Events (SSE)
  • Parameterize all SQL queries in Job.cfc and fix validation bugs
  • Modernize developer debug panel, error pages, and /wheels/* UI
  • Add inline migration results and out-of-sequence migration support
  • Add comprehensive documentation for new features and framework competitive analysis
  • Update GitHub Actions workflow paths for flattened structure

Test plan

  • Verify app boots with flattened vendor/ structure
  • Test nested route definitions and URL generation
  • Validate HTML5 form helpers render correct markup
  • Run job queue tests (enqueue, process, retry, failure)
  • Test SSE endpoint streaming
  • Confirm migrations run with inline results and out-of-sequence support
  • Verify debug panel and error pages render correctly
  • Run full test suite across engines

🤖 Generated with Claude Code

claude and others added 13 commits February 20, 2026 20:27
Analyzes four options for restructuring the monorepo so that cloning
the repo produces a runnable application. Recommends Option A (flatten)
which promotes templates/base/src/ to root and moves core/src/wheels/
into vendor/wheels/, matching the historical Wheels repo layout.

https://claude.ai/code/session_01Fu8QwCidRvyz1eaZcHRECM
Promotes the app scaffold (templates/base/src/) to repo root and moves
the framework core (core/src/wheels/) to vendor/wheels/, making the
repository root a runnable Wheels application. After cloning, developers
can simply run `box server start` without Docker assembly.

Key changes:
- app/, config/, public/, db/, plugins/ now live at repo root
- vendor/wheels/ contains the framework core (tracked as source)
- compose.yml simplified from 3 cross-dir volume mounts to 1 root mount
- Build scripts (prepare-base.sh, prepare-core.sh) updated for new paths
- CLI source detection updated (isWheelsInstall checks for cli/ + tools/)
- Documentation updated across MONOREPO.md, docs/, design_docs/
- .gitattributes added for export-ignore and linguist-vendored
- .gitignore updated: vendor/* ignored except vendor/wheels/

Note: GitHub Actions workflow updates (.github/workflows/*.yml) require
workflows permission and will need to be applied separately by a
maintainer with the appropriate token.

https://claude.ai/code/session_01Fu8QwCidRvyz1eaZcHRECM
Details the 5 GitHub Actions workflow files that need path updates
for the flattened monorepo. Requires workflows permission on token.

https://claude.ai/code/session_01Fu8QwCidRvyz1eaZcHRECM
Updates version detection and JDBC download paths in all workflows
to match the new flattened directory structure:
- Version read from root box.json instead of templates/base/src/box.json
- Oracle JDBC downloaded to .engine/ instead of templates/base/src/.engine/
- Removed cd into deleted templates/base/src/ directory

https://claude.ai/code/session_01Fu8QwCidRvyz1eaZcHRECM
Compares Wheels 3.0 against Rails 8.1, Laravel 12, Django 6.0,
Phoenix 1.8, Next.js 16, and Spring Boot 4.0. Covers ORM, routing,
testing, real-time, jobs, CLI, and deployment. Includes gap analysis
and prioritized recommendations.

https://claude.ai/code/session_01Fu8QwCidRvyz1eaZcHRECM
Four major features from the framework review recommendations:

1. Nested Resource Routes: Add callback parameter to resources() for
   clean block-based nested resource declaration. Backward compatible
   with existing nested=true approach.

2. HTML5 Form Helpers: Add emailField, urlField, numberField, telField,
   dateField, colorField, rangeField, searchField (plus Tag variants).
   Each follows the existing passwordField pattern.

3. Database-Backed Job Queue: Complete rewrite of Job.cfc with
   persistent queue storage, retry with exponential backoff, dead letter
   handling, queue stats, and batch processing. Includes migration for
   _wheels_jobs table.

4. Server-Sent Events (SSE): New controller module (sse.cfc) with
   renderSSE() for single-event responses, initSSEStream()/
   sendSSEEvent()/closeSSEStream() for streaming, and isSSERequest()
   for content negotiation.

Includes 950 lines of TestBox BDD tests across 4 spec files.

https://claude.ai/code/session_01Fu8QwCidRvyz1eaZcHRECM
…eue, and SSE

Update both .ai/ reference docs and docs/src/ GitBook docs to cover all four
new features: callback-based nested resource routes, HTML5 form helpers
(emailField, urlField, numberField, etc.), database-backed background job
queue, and Server-Sent Events controller support.

https://claude.ai/code/session_01Fu8QwCidRvyz1eaZcHRECM
- Replace all string-interpolated SQL in Job.cfc with queryExecute()
  parameter binding to prevent SQL injection
- Move callback auto-set of nested=true before comma-list check in
  resources.cfc so error is correctly thrown for callback + list combos
- Handle empty data string in SSE $formatSSEEvent() to emit required
  data: line per SSE spec
- Add step parameter to dateField/dateFieldTag for HTML5 compliance
- Fix misleading describe block labels in html5FormHelpersSpec

https://claude.ai/code/session_01Fu8QwCidRvyz1eaZcHRECM
Replace the dated gray debug footer with a modern fixed-bottom debug toolbar
featuring tabbed panels (Request, Timing, Params, Environment, Tools) with
a Catppuccin Mocha dark theme. Add comprehensive dark theme CSS overrides to
the shared layout header so all /wheels/* pages (info, routes, migrator,
plugins, API docs, guides) inherit the modern dark styling automatically.

Redesign error pages (wheelserror.cfm, cfmlerror.cfm) with syntax-highlighted
source code context, collapsible stack traces, organized request info grids,
and collapsible scope dumps. Add migration status summary cards to the
migrator page. Fix SVG icon visibility across all pages for dark backgrounds.

https://claude.ai/code/session_01Fu8QwCidRvyz1eaZcHRECM
Replace modal popups with inline expandable results section that supports
copy-to-clipboard for easy pasting into AI agent windows. Add detection
and execution of out-of-sequence migrations created by other developers
on separate branches, with individual and bulk run capabilities.

https://claude.ai/code/session_01Fu8QwCidRvyz1eaZcHRECM
…o claude/reorganize-monorepo-structure-qNFcv

# Conflicts:
#	.github/workflows/generate-changelog.yml
#	.github/workflows/release-candidate.yml
#	.github/workflows/release.yml
#	.github/workflows/tests.yml
#	.github/workflows/version-bump.yml
Resolve conflicts by keeping v3.1 refactored approach (decomposed init
includes, no wirebox/testbox deps) while preserving authenticateThis
plugin addition from develop.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ucture

Resolve conflict in prepare-base.sh by keeping .opencode copy line.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Base automatically changed from feat/v3.1-internal-refactor to develop February 21, 2026 04:58
- Workflow files: keep flat paths from monorepo reorg, adopt develop's
  SNAPSHOT workflow changes and 3.1.0 version references
- Docs: keep flat vendor/wheels paths, update URLs to 3.1.0, keep new
  SSE documentation section
- Delete files removed by monorepo reorg (core/box.json,
  core/src/wheels/events/onapplicationstart.cfc, templates/base/box.json)
- starter-app: update wheels-core dependency to ^3.1.0
@bpamiri bpamiri merged commit f737ffa into develop Feb 21, 2026
0 of 43 checks passed
@bpamiri bpamiri deleted the claude/reorganize-monorepo-structure-qNFcv branch February 21, 2026 06:15
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