@@ -25,7 +25,7 @@ That's it. Every asset is compiled into the binary via `include_dir!`.
2525
2626## Screenshots
2727
28- ** Planner123** — Gantt chart with dependency arrows , project-colored bars, and constraint scoring:
28+ ** Planner123** — Gantt chart with split panes , project-colored bars, and constraint scoring:
2929
3030![ Planner123 Gantt] ( screenshots/planner123-gantt.png )
3131
@@ -166,7 +166,7 @@ SF.createButton({ text: 'Sm', variant: 'primary', size: 'small' })
166166## Timeline Rail
167167
168168The scheduling hero view. Resource lanes with positioned task blocks,
169- gauges, stats, heatmaps, and changeover indicators.
169+ gauges, stats, and changeover indicators.
170170
171171``` javascript
172172// Day header
@@ -227,7 +227,8 @@ Gauge styles: `heat` (blue→amber→red), `load` (emerald→amber→red), `emer
227227
228228Interactive task scheduling with Frappe Gantt. Split-pane layout: task grid
229229on top, SVG timeline chart on bottom. Drag to reschedule, resize to change
230- duration, sortable grid columns, project-colored bars, and pinned task styling.
230+ duration, sortable grid columns, project-colored bars, dependency arrows,
231+ and pinned task styling.
231232
232233``` html
233234<link rel =" stylesheet" href =" /sf/vendor/frappe-gantt/frappe-gantt.min.css" >
@@ -394,8 +395,9 @@ SF.map.decodePolyline('_p~iF~ps|U...'); // Google polyline algorithm
394395solverforge-ui/
395396├── Cargo.toml # 2 deps: axum + include_dir
396397├── src/lib.rs # routes() + asset serving
397- ├── Makefile # make → cats css-src/ + js-src/ into sf.css + sf.js
398- ├── css-src/ # 16 CSS source files (numbered for concat order)
398+ ├── Makefile # bundles css-src/ + js-src/ into sf.css + sf.js
399+ ├── .github/workflows/ # CI, release, and publish automation
400+ ├── css-src/ # 19 CSS source files (numbered for concat order)
399401│ ├── 00-tokens.css # design system variables
400402│ ├── 01-reset.css # box-sizing reset
401403│ ├── 02-typography.css # @font-face declarations
@@ -411,8 +413,10 @@ solverforge-ui/
411413│ ├── 12-footer.css # .sf-footer
412414│ ├── 13-scrollbars.css # custom webkit scrollbars
413415│ ├── 14-animations.css # @keyframes + toast + api guide
414- │ ├── 15-rail.css # timeline rail, resource cards, blocks
415- │ └── 16-gantt.css # Frappe Gantt + Split.js layout + bar styling
416+ │ ├── 15-rail-resources.css # resource cards, gauges, resource layout
417+ │ ├── 16-rail-blocks.css # rail blocks, changeovers, unassigned styles
418+ │ ├── 17-gantt-layout.css # split layout, grid table, view controls
419+ │ └── 18-gantt-bars.css # Frappe bar overrides, pinned/highlighted bars
416420├── js-src/ # 15 JS source files
417421│ ├── 00-core.js # SF namespace, escHtml, el()
418422│ ├── 01-score.js # score parsing
@@ -427,7 +431,7 @@ solverforge-ui/
427431│ ├── 10-backend.js # createBackend() — axum/tauri/fetch
428432│ ├── 11-solver.js # createSolver() — SSE state machine
429433│ ├── 12-api-guide.js # createApiGuide(), createFooter()
430- │ ├── 13-rail.js # timeline rail, resource cards, blocks
434+ │ ├── 13-rail.js # timeline rail header, cards, blocks, changeovers
431435│ └── 14-gantt.js # Frappe Gantt wrapper (split pane, grid, chart)
432436└── static/sf/ # Embedded assets (include_dir!)
433437 ├── sf.css # concatenated from css-src/
0 commit comments