Updates
What we've shipped and where we're headed. CaneCalc is actively developed and shaped by community feedback.
Roadmap
Recently Shipped
Marinaro Slope Lines & Chart Zoom
Section slope visualization on the Marinaro chart, plus drag-to-zoom controls across all chart types — driven by maker feedback.
Community Feedback Round
Guide customization, finish presets, metric support, station arrow keys, navigation improvements, and accessibility contrast — all driven by maker feedback.
Spey Rod Support
Two-handed rod design with AFFTA spey line weights, D-loop stress model, splice & composite ferrules, and spey-specific handle defaults.
Stress Curve Editor
Design tapers by sculpting the stress curve directly — drag control points, and the engine derives dimensions in real time.
Up Next
Action Measures & Design Parameters
Bokstrom RAV/LWV, Hexrod A1/A2/A3 action measures, and Carlin SA# notation in the analysis summary.
Guide Spacing Formulas
Clemens and hybrid spacing methods alongside Cattanach, with a formula selector in the guide panel.
Cross-Section Visualization
Interactive SVG showing hex geometry, glue lines, and wall thickness at any station along the rod.
Offline Support
Use CaneCalc in the shop without an internet connection.
Custom Line Profiles
Define your own line weight profiles for accurate casting simulation.
Changelog
February 28, 2026
Marinaro Chart Improvements
ImprovedCommunity FeedbackMarinaro chart now defaults to 1x Y-axis exaggeration with section slopes visible by default. Slope rates display in thou/in to match Hexrod conventions. Section slope lines are brighter and more visible, with smaller station dots so subtle convexity is easier to read. Butt slope rate now extends through grip stations, matching Hexrod behavior.
Chart Zoom Controls
NewCommunity FeedbackDrag to zoom into any region of any chart. A Reset button appears in the toolbar when zoomed, and double-click anywhere to snap back to the full view. Works on all chart types — stress, dimensions, Bokstrom, deflection, Marinaro, and more.
Design Title Sync
FixedCommunity FeedbackRenaming a design in the save dialog now updates the title inside the taper data. Previously, reopening a renamed design would show the old title.
Action Length Station Preservation
FixedChanging the action length no longer removes user-added custom stations. Stations outside the new range are filtered, but all valid stations are preserved.
Under the Hood
- Slope line SVG z-order fixed — slope lines now render above the taper curve
- Recharts connectNulls enabled for slope lines — fixes M…Z isolated-point SVG paths
- Butt section slope calculation uses last physical station (including grip), not action length
- slopePerInch added to SectionSlope interface for thou/in display
- Chart zoom rewrite: unified use-chart-zoom hook with drag-zoom, reset, and double-click across 9 chart types
- 21 zoom unit tests + 3 engine regression tests for grip station inclusion
February 23, 2026
Guide Customization UX
ImprovedCommunity FeedbackRedesigned guide list with column headers (Pos″, Type, Wt), concise labels, and click-to-edit weight values. Every guide type is now editable via grouped dropdowns — Snake Brand, Lite Wire, Chrome, Single Foot, five stripping types, and five tip-top types. Overridden weights show the catalog value struck through with a reset button, and overridden rows get a left-border accent.
Finish Presets Expansion
NewCommunity FeedbackFive new hand-rubbed finish presets: Gorilla Glue (rubbed), Tru-Oil, Boiled Linseed Oil, Oil/Varnish Blend, and Marine Spar (rubbed). Each has researched dimension-per-coat values and density. Coats slider now goes up to 25 with a new build-per-coat input and running total annotation.
Maker Name Normalization
ImprovedCommunity FeedbackClassic taper library now displays maker names as surname-only (Garrison, Payne, Young, etc.) throughout the library page, cards, and filter dropdown. URL slugs remain unchanged.
Weight Overrides in Exports
FixedGuide weight overrides now propagate to all outputs: PDF report, print view, clipboard guide table, casting simulation, and rod physics (balance point, swing weight). Previously overrides only affected the sidebar panel.
Lite Wire Guide Weights
FixedCommunity FeedbackCorrected #2/0 and #1/0 Lite Wire guide weights — the 2/0 was listed heavier than 1/0. Guide weight progressions are now monotonic across all wire types.
Streamlined Navigation
ImprovedCommunity FeedbackOpening a saved design now goes straight to the designer instead of the dashboard. Logo links to the dashboard when signed in. Post-login redirects to the dashboard. My Designs in the library opens designs directly into the designer.
Delete Design from Designer
NewCommunity FeedbackNew delete button in the designer header with a confirmation dialog. Deleting resets to a fresh default taper instead of navigating away.
Metric Unit Support
ImprovedCommunity FeedbackCharts, dimension inputs, and the materials panel now display unit-appropriate symbols (mm vs ″) and accept metric values natively. Arrow key nudges in the station table use metric-aware increments.
Station Arrow Key Nudge
NewCommunity FeedbackUse arrow keys to nudge station dimensions up or down by one thou (0.001″) or 0.025mm in metric mode. A fast, precise way to fine-tune individual stations.
Action Length Input
FixedCommunity FeedbackAction length field now commits on blur instead of on every keystroke, eliminating flicker during typing. Supports metric values when unit system is set to metric.
Accessibility Contrast
FixedCommunity FeedbackTertiary and muted text throughout the app now meets WCAG AA contrast requirements.
Under the Hood
- effectiveWeight() helper ensures all weight reads respect overrides — 6 call sites updated
- totalGuideWeight() already used effectiveWeight internally; exports and display now do too
- 152 taper entries normalized via MAKER_SLUG_MAP with regression test for slug stability
- Guide page updated with finish presets table, guide preset cards, and manual control docs
- Click-to-edit weight pattern with Enter/Escape/Tab navigation, matching station table UX
- Unified guide type selector with composite value encoding for all wire types and single-foot options
- 24 Playwright E2E tests covering guide customization, finish system, and library display
- Unit-aware format functions replace hardcoded toFixed() across 13 chart and component files
- parseDim() handles metric input with mm→inch conversion for station and action length fields
- Supabase avatar CDN added to CSP img-src directive
- Welcome banner logic scoped to default Garrison 209E taper only
- Guide weight note clarifies catalog values are measured without finish
February 22, 2026
Handle Configuration Redesign
ImprovedRedesigned handle sidebar with labeled inputs, a mini SVG diagram showing grip zones, and editable reel seat length. Spey rods show upper and lower grip sections with independent sizing. All handle components are now included in rod weight, balance, and swing weight calculations.
Lower Grip in Exports
ImprovedPDF report, JSON export, and weight breakdown now include lower grip data for spey rods. The cover page, build specs, and components pages all show the full handle configuration.
Numeric Input Fixes
FixedCommunity FeedbackReel seat length, swelled butt dimensions, and varnish density inputs now support backspace-to-clear editing. Previously these fields rejected empty values during entry.
Under the Hood
- computePhysics() now accepts lowerGripConfig and includes it as a component weight at the correct position
- Reel seat position calculation uses actual reel seat length instead of hardcoded offset
- getSpeyHandleDefaults() returns upper grip only as gripLength; handleLength correctly sums upper + reel seat + lower
- Lazy migration auto-populates lower grip defaults for existing Spey tapers via useEffect
- All 18 computePhysics() call sites updated to pass lowerGripConfig