dvi3v - News

Version 3.9.2 (2026-09-05)
==========================
- Documentation freshness audit across the whole project (excluding
  ResearchJournal.org and FutureResearch.org by design; DevelopmentStandard.org
  is developer-, not user-, facing). Highlights:
  - FutureResearch.org: removed four items already marked done or
    implemented, and a fifth describing a problem already solved by
    different means; fixed a structural bug (two sections had drifted
    past the document's end-marker); added the previously-untracked
    custom reference card build/validation and several items merged
    in from Concept.org.
  - Concept.org: removed a "Future Directions" section that duplicated
    FutureResearch.org; added an explicit Goals statement and a new
    section connecting each project artifact (test plan, hardware,
    manufacturing, reference card, state of the art, data exchange,
    debug reporting) to those goals, with cross-references.
  - DataExchangeWorkflow.org and DebugFileUpload.org: both substantially
    rewritten. The former was a pre-implementation proposal for the
    archive tools that have long since shipped; the latter documented a
    flood-fill bug fixed in v3.3.13 as a current "known issue," plus a
    fictional dated debug-session example. Both now describe the actual,
    current tools and workflow.
  - ReferenceCard.org: restructured so the ISO 12233 chart actually in
    use leads the document, and the custom card design (never built) is
    clearly marked as a specification, not current practice.
  - TestInstrumentation.org (an orphaned file, pre-dating the project's
    canonical document template, not part of the published set) folded
    into TestPlan.org; TestPlan.org also had two more instances of the
    same resolved-bug staleness removed, and a rigid, long-past "Week
    1-6" execution timeline softened to the phase structure it still
    usefully describes.
  - ManufacturingConfig.org and StateOfTheArt.org: smaller fixes (a
    redundant "future" section already achieved earlier in the same
    document; a changelog-style note folded into prose; a paper-color
    limitation claim not true since v3.7.0).


Version 3.9.1 (2026-08-25)
==========================
- Fixed: ./configure INDEX=... (v3.9.0) was not applied to the manual
  pages' "documentation index" back-link, which stayed hardcoded to
  Index.html; man2htmldoc, the build helper that renders it, was not
  covered by the v3.9.0 change at all. man2htmldoc is now generated from
  a template (man2htmldoc.in) like dvi3v and the manual pages, so all
  three manual pages' HTML now honour the configured INDEX. Also fixed a
  related gap this surfaced: after "make clean" (which now also removes
  the generated man2htmldoc) followed by "make man-html" with no
  intervening ./configure, the regenerated file came back without its
  executable bit; man-html now restores it directly, matching the
  existing safeguard for dvi3v.


Version 3.9.0 (2026-08-17)
==========================
- Fixed for real: Concept.org's equations still had visible backslashes
  in HTML. Root cause found by testing against MathJax's actual default
  configuration (the earlier verification had used a more permissive,
  unrepresentative package set): \text{fill\_ratio} shows a literal
  backslash under MathJax's real defaults, and removing the backslash
  breaks the PDF build (LaTeX requires it inside \text{}). Fixed by
  rewording the three equations' compound-word labels with spaces
  instead of underscores (e.g. "fill ratio" instead of "fill_ratio"),
  which needs no escaping in either backend and is arguably more
  readable besides. Genuine subscript notation is untouched.
- New: "./configure INDEX=..." sets an alternative target for the HTML
  documentation set's "<- Index" navigation link (default: Index.html).
  Useful when the HTML export bundle (see "make html-export") is
  deployed under a different index or portal page. Required removing a
  per-document #+HTML_LINK_UP/#+HTML_LINK_HOME override that, present in
  every document, was silently taking precedence over the project-wide
  default and would otherwise have made the new option inert.


Version 3.8.2 (2026-08-14)
==========================
- Fixed: Concept.org's equations still did not render correctly in HTML
  for Péter after v3.8.1. Applied the mechanism Péter identified in the
  Org manual ("12.3 Subscripts and Superscripts"): the project's default
  #+OPTIONS: ^:t makes Org treat any bare underscore as a subscript
  marker on export, which can reach into a raw LaTeX \text{...}
  argument before it gets to the renderer. Changed the project default
  to #+OPTIONS: ^:{} (only explicitly braced a_{b} is a subscript; a
  bare a_b is always literal text) across every document, removing
  Org's own underscore-reinterpretation as a variable regardless of how
  a given equation happens to be escaped. The equations themselves are
  unchanged from v3.8.1.


Version 3.8.1 (2026-08-13)
==========================
- Fixed: Concept.org's equations did not render at all in the HTML
  documentation (v3.8.0 regression). Splitting them into separate
  LaTeX/HTML export blocks had removed the only native LaTeX-fragment
  syntax in the document, so Org's HTML export no longer detected that
  MathJax was needed and never loaded it; the equation source was left
  showing as raw, unrendered text. Reverted to a single native
  \begin{equation} block per equation (as recommended in the Org manual,
  "Math formatting in HTML export"), letting Org include MathJax
  automatically. The backslash-escaped underscores inside \text{} that
  prompted the original v3.8.0 change are, confirmed by rendering
  through the actual MathJax library, both required and correctly
  handled by MathJax --- the escaping was never the problem.


Version 3.8.0 (2026-08-13)
==========================
- Fixed: --no-holes could leave a small disk-shaped artifact, unconnected
  to the object, elsewhere in the frame. A stray noise pixel from
  thresholding survived unfiltered through hole-filling, then a single
  isolated pixel became a solid disk once the margin was applied. A
  despeckle pass now runs before the margin is added, matching what the
  default (with-holes) path already did.
- Concept.org substantially revised: removed the obsolete "Project
  Information" section; synchronized the hole-filling, paper-detection,
  and object-detection descriptions with the current implementation
  (several sections described mechanisms that no longer exist); added
  full bibliographic citations with links for Otsu's method, Serra's
  mathematical morphology, and the Potrace algorithm; fixed math
  equations that rendered a stray backslash in the HTML/MathJax output
  (LaTeX and HTML now get correctly different escaping, as each
  requires).
- New document: CameraDocumentStand.org, moved out of Concept.org's
  "Document Information" section, where it did not fit the tool's
  conceptual overview.


Version 3.7.1 (2026-08-12)
==========================
- Fixed: object detection could pick the reference paper itself as "the
  object" (regression from v3.7.0's polarity fix), when the paper was
  large, centered, and light-colored enough to look like a plausible
  "light" object candidate. Object detection now knows where the
  detected paper is and rejects any candidate that substantially
  contains it.
- Manual pages: fixed garbled characters (e.g. "Ã" for a multiplication
  sign, "â¢" for a bullet) caused by raw UTF-8 characters being
  misread by groff without a preconv pass. All manual-page special
  characters now use groff's portable escapes; man2htmldoc also runs
  groff with -k (preconv) as a second line of defence.
- Manual pages: copyright lines now use the same phrasing as the HTML
  documentation ("Peter Felecan, with Claude (Anthropic AI), model
  Sonnet 5"), not a differently-worded variant.


Version 3.7.0 (2026-08-11)
==========================
- Reference paper color is now detected automatically by default: the
  photo is reduced to its dominant colors (ImageMagick color
  clustering), and each large-enough color is tried in turn. Colored
  paper (e.g. red) now normally works with no --paper-color flag at
  all. Explicit --paper-color still works exactly as before, and skips
  straight to matching that named color (useful if auto-detection picks
  the wrong dominant color, or to save the extra processing time).
- Fixed: object detection could pick the entire photo as "the object"
  instead of the actual subject, when the subject was lighter than its
  surroundings (the previous logic always assumed a dark object on a
  light background, and additionally its area-based scoring rewarded
  ever-larger regions instead of penalizing them). Object detection now
  tries both polarities and never selects a region covering most of the
  frame.


Version 3.6.1 (2026-08-10)
==========================
- Fixed: colored reference paper (e.g. a red sheet) could fail detection
  even with excellent visual contrast, because detection worked on
  grayscale brightness only. dvi3v now also tries a color-based match
  against --paper-color for any non-neutral paper color, before falling
  back to the brightness method. Give --paper-color to match your paper,
  e.g. --paper-color red.
- The dvi3v(1) manual page now documents every option, including
  --list-paper-formats (was undocumented); --reference-mm now explains
  what the value means and how it is used, with a worked example;
  --color and --paper-color list their full supported color sets; a
  placeholder bug-report address was filled in.
- CreateTestDataArchive gained -h/--help and a manual page
  (CreateTestDataArchive(1)); a missing -c argument is now a clear error
  instead of being silently ignored.


Version 3.6.0 (2026-07-13)
==========================
- New "bootstrap" script regenerates the autotools machinery
  (autoreconf --install --symlink --force) after a fresh checkout or an
  edit to configure.ac / Makefile.am.
- Fixed: "make html" left the manual-page links in the documentation
  index dangling (dvi3v.1.html and man2htmldoc.1.html were only built by
  the separate "make man-html"). "make html" now builds them too.


Version 3.5.2 (2026-07-09)
==========================
- Assistant model attribution updated to Claude Sonnet 5 (was Opus 4.8)
  throughout the project: copyright headers, AUTHORS, the manual pages,
  and the {{{ASSISTANT}}} macro used by all documents. Historical
  ChangeLog/NEWS/journal entries are left as-is.


Version 3.5.1 (2026-07-08)
==========================
- The documentation index now links the manual pages (dvi3v(1),
  man2htmldoc(1)).
- "make maintainer-clean" now removes the HTML export bundle.


Version 3.5.0 (2026-06-08)
==========================
Deployment bundle and a manual page for man2htmldoc

- "make html-export" bundles the HTML and PDF of every document, plus the
  manual-page HTML, into dvi3v-html-N.N.N.tar.xz for upload to an HTTP
  server. "make html-export-clean" removes the bundle.
- man2htmldoc now has its own manual page, rendered to HTML next to
  dvi3v's by "make man-html".
- "make clean" now also removes a published Constitution.html.


Version 3.4.1 (2026-06-06)
==========================
Build fixes

- "make" no longer fails: a non-existent hardware/README.md was listed as
  installed data.
- "make clean" keeps the hand-written Preamble.tex (a blanket *.tex rule
  used to delete it) and now removes the python backend's __pycache__.
- The session handoff is attributed to the AI assistant alone.


Version 3.4.0 (2026-06-06)
==========================
Two-line author block in all documents

The author block now shows the project author on the first line and the
AI assistant on the second, in both PDF and HTML.


Version 3.3.16 (2026-06-04)
===========================
STL export no longer requires OpenSCAD by default

  --stl [python|scad]   Choose the STL backend. The default, python,
                        needs only Python 3 (a bundled helper extrudes
                        the silhouette and triangulates with a vendored
                        earcut). scad uses OpenSCAD. If one backend is
                        missing the other is used; if neither, the STL
                        is skipped and the SVG is still produced.

--no-holes now flows through to both DXF and STL (filled vs holes).


Version 3.3.14 (2026-06-04)
===========================
Optional DXF and STL export

New options write companion files beside the SVG:
  --dxf            millimetre DXF (potrace native backend; no extra tool)
  --stl            extruded STL plate (requires OpenSCAD)
  --stl-thickness  STL thickness in mm (default 3.0)

OpenSCAD is optional; if absent, --stl is skipped with a warning and the
SVG is still produced. Verified: DXF and STL match the SVG dimensions.


Version 3.3.13 (2026-06-04)
===========================
Fixed --no-holes (hole filling) mode

The --no-holes mode now correctly fills interior holes so the whole
delimited region is solid, using a topological exterior flood-fill.
Previously it failed to fill the region and eroded thin frames (e.g.
scissors handles) into spikes. Verified on the scissors photo and the
circle, square and triangle hole-combinatorics cases; the filled outer
dimensions now match preserve-mode dimensions.


Version 3.2.19 (2026-03-19)
===========================
First test results verification and automation infrastructure

VERIFIED - A4 Detection Working Correctly!
* Circle25mm test with v3.2.14.122 (contains v3.2.17 fix)
* A4 detected: 2347×3221px at 10.845 px/mm ✓
* Object measured: 24.9mm × 24.7mm (Physical: 25mm) ✓
* SVG output: 28.68mm (includes 2mm margin) ✓
* Auto-threshold selected 62% (quality: 72.33) ✓

The v3.2.17 A4 detection fix is CONFIRMED working!

Critical Fix - Configure Makes dvi3v Executable:
* configure.ac: Added AC_CONFIG_COMMANDS
* After ./configure, dvi3v is now executable
* No need to run 'make' for testing
* Correct solution: configure sets permissions, not Makefile

Cleanup:
* Removed dvi3v_test (debugging artifact)
* Added to .tar-exclude

Test Automation - RunTest Script:
* TestInstrumentation/RunTest added
* Standardizes test execution
* Usage: ./RunTest ../TestResults/Baseline/Circle25mm
* Creates: OutputLog, EXIFTags, debug/
* Privacy: Strips GPS coordinates from EXIF
* Bug fixed: "OutpuLog" → "OutputLog" typo

Test Results Analysis:
Circle25mm baseline test shows:
- A4 detection: WORKING (was broken in v3.0-3.2.16)
- Dimension accuracy: <1mm error on 25mm object
- Auto-threshold: Excellent performance
- Scale: 10.845 px/mm (was 8.754 estimated)
- Margin: Working correctly (adds ~4mm as expected)

EXIF Data Reveals:
- Camera: Google Pixel 9a
- Distance: 0.25m (macro range)
- Focal length: 4.53mm (24mm equiv)
- Good setup for this application

Next Steps:
- Continue baseline testing (7 more objects)
- Upload test data for analysis
- Verify consistency across sizes
- Build accuracy database

Storage Capacity:
YES - Can analyze all test uploads!
- Each archive: ~3-4MB (no problem)
- Continue with per-object archives
- Will track accuracy across all baselines

From v3.2.17-18:
✓ A4 detection restored (critical fix)
✓ Lesson learned and documented
✓ Code completeness rule established

Achievement:
Core functionality verified working with real-world data.
Tool now fulfills its primary purpose: dimensionally-accurate
SVG extraction from photographs.

dvi3v - News

Version 3.2.18 (2026-03-17)
===========================
Documentation - Critical lesson learned and codified

Lesson Documented:
* "Never omit working code for brevity"
* Added to ResearchJournal and DevelopmentStandard
* Documents A4 detection catastrophe (17 broken versions)

Why This Matters:
A4 detection was deleted in v3.0 with comment "omitted for brevity"
Result: 24% dimension error for 17 versions
Only caught by Peter's real-world test data

New Development Rule:
FORBIDDEN comment patterns:
- "omitted for brevity"
- "abbreviated - same as version X"
- "code removed, see elsewhere"
- "TODO: implement later"

If code is too long: Extract to function, don't delete!

Prevention:
1. Test before AND after refactoring
2. Grep for "omitted" in reviews
3. Never commit "abbreviated" comments
4. If not implemented: Fail clearly, don't fake it

This ensures the mistake never happens again.

dvi3v - News

Version 3.2.17 (2026-03-17)
===========================
CRITICAL FIX - A4 scale detection restored (dimension accuracy)

CRITICAL - Scale Detection Fixed:
* A4 detection code was MISSING since v3.0
* Code comment said "omitted for brevity" - critical error!
* Always fell back to estimation (wrong by ~24%)
* Circle25mm showed as 34.68mm (should be ~25mm)

Root Cause Analysis:
* Estimation formula: image_height × 0.65 / 297mm
* Assumes A4 fills 65% of frame
* Peter's photo: A4 was actually 3221px, not 2600px
* Wrong scale: 8.754 px/mm
* Correct scale: 10.85 px/mm
* Error: 24% underestimation → 24% overestimation of object size

Fix Implemented:
* Restored full A4 detection from object_to_svg_v1.sh
* Detects largest white rectangular region
* Calculates scale from A4 dimensions (210×297mm)
* Handles portrait/landscape orientation
* Creates debug_0_paper_detect.png for verification
* Proper fallback if detection fails

Expected Results After Fix:
* Circle25mm: ~24.9mm diameter (was 34.7mm) ✓
* All test objects: Match physical measurements
* Scale method: "paper-detected" (not "estimated")
* Scale: ~10.85 px/mm for Peter's setup

Verification with Peter's Test Data:
* Manual A4 detection: SUCCESS
* Detected: 2347×3221px rectangle
* Calculated scale: 3221px / 297mm = 10.85 px/mm
* Object size: 270×268px
* Correct dimensions: 24.88mm × 24.70mm ✓

EXIF Investigation:
* Image resolution (DPI): Not useful - display density only
* Focal length + sensor: Requires distance to subject
* Conclusion: Physical reference (A4) is correct approach
* EXIF cannot replace physical scale reference

Impact:
This was THE most critical bug - dimension accuracy is
the primary project requirement. Without it, the tool
was fundamentally broken since v3.0 rewrite.

From v3.2.16:
✓ Debug option with directory argument: -d [DIR]
✓ Simplified temp dir naming: /tmp/dvi3v-PID
✓ Build system fixed: executable after make
✓ Manual page updated for debug option

Primary Achievement:
Dimension accuracy restored. Tool now fulfills its
core purpose: extracting dimensionally-accurate SVGs
from photographs with A4 reference.

Next: Full baseline testing with corrected dimensions.

dvi3v - News

Version 3.2.16 (2026-03-17)
===========================
Debug option enhancement and dimension accuracy investigation

Debug Option Enhancement:
* Optional directory argument: -d [DIR] or --debug [DIR]
* Specify custom location for debug files
* User directories never auto-deleted
* Default: /tmp/dvi3v-PID (simplified from .XXXXXX suffix)
* PID-only naming sufficient for typical usage

Build System:
* Fixed: dvi3v now executable after ./configure && make
* Added dependency: all-local: dvi3v
* Ready for local testing without installation

Archive Content:
* Corrected: Removed test execution data
* Test results belong in separate archives
* Only project code/templates in main archive

CRITICAL - Dimension Accuracy Issue:
* Circle25mm shows as ~34.7mm in SVG (should be 25mm)
* Error: 39% too large (1.39x factor)
* Root cause under investigation:
  - Scale detection method?
  - Morphology expansion?
  - EXIF data not utilized?
* Awaiting test data analysis

Questions for Next Iteration:
1. Was A4 paper in Circle25mm photo?
2. Scale detection output (detected vs estimated)?
3. EXIF correlation approach to implement?
4. SVG background: filled rectangle or viewer default?

Completed Fixes from v3.2.15 Feedback:
✓ Debug directory argument implemented
✓ Simplified naming (removed XXXXXX)
✓ Build system fixed
✓ Test data excluded from archive
✓ Manual page updated

Primary Focus:
Dimension accuracy is critical for project success.
All other features secondary to getting measurements right.

dvi3v - News

Version 3.2.15.build (2026-03-17)
==================================
Critical regression fix from first test data

CRITICAL FIX - Color Inversion Regression:
* SVG output was inverted (white object on black background)
* Fixed by adding `-negate` after morphology operations
* Root cause: Morphology inverted image polarity
* Verified with debug_3_final.pbm analysis
* SVG now correctly shows black object on transparent background

Debug Directory Management:
* Proper naming: /tmp/dvi3v-PID.RANDOM
* Safe cleanup: Only removes if matches /tmp/dvi3v-[0-9]+. pattern
* Prevents accidental data loss from rm -rf
* Follows DevelopmentStandard.org guidelines

Template Organization:
* Moved to TestInstrumentation/ (from TestResults/)
* Templates are methodology, not data
* Updated Org-mode syntax:
  - TODO shortcuts: (t), (i), (d!), (r!)
  - Native checkboxes: - [ ] instead of :: [ ]
  - Timestamps on DONE/RESOLVED transitions

New Helper Script:
* ExtractExif - Auto-populate camera EXIF data
* Usage: ExtractExif Photo.jpg Measurements.org
* Extracts: Device, ISO, Exposure, Focus
* Reduces manual data entry

Photography Guidance Updated:
* Concept.org now reflects smartphone reality
* Pragmatic approach for limited manual controls
* Essential: Timer (10s), Flash OFF
* Accept auto settings when manual unavailable
* Principle: Consistent methodology > perfect control

Test Data Archives:
* Fixed: Path separator / → _ in filenames
* Enables: Baseline/Circle25mm archives
* Works with subdirectory categories

Test Plan Fixed:
* Corrected sizes: 50/100/150 → 25/50/75mm
* Now matches actual TestInstrumentation objects
* Coherence between plan and implementation

Build System:
* dvi3v now executable after ./configure && make
* Added all-local hook for local testing
* No installation required to test

First Real Test Data:
* Peter's Circle25mm test revealed regression
* Systematic analysis and fix
* All feedback integrated
* Ready for complete baseline testing

From Peter's Review - All Issues Addressed:
✓ Color inversion regression fixed
✓ Templates moved and syntax corrected
✓ CreateTestDataArchive path fix
✓ Test hierarchy coherence restored
✓ EXIF extraction helper added
✓ Smartphone photography pragmatism
✓ Debug directory safety
✓ Debug directory naming
✓ Build system fix
✓ Documentation updated

Ready for Complete Testing:
All blockers removed. Baseline test suite can proceed.

dvi3v - News

Version 3.2.14.build (2026-03-14)
==================================
Multi-tool printer analysis documentation

New Documentation Section:
* "Analyzing Multi-Tool Printer Settings" in ManufacturingConfig.org
* Comprehensive guide to .3mf analysis for multi-tool printers

Key Lessons Documented:
1. Multi-tool configuration format
   - Settings are comma-separated lists
   - Example: filament_type = PETG;PLA
   - Each value corresponds to a tool (0, 1, 2...)

2. Identifying which tool was used
   - Check: perimeter_extruder = X
   - Check: infill_extruder = X
   - Zero-based indexing (Tool 0, Tool 1, etc.)

3. Extracting correct settings
   - Match tool index to list position
   - perimeter_extruder = 1 means second value
   - temperature = 250,230 → use 230°C (index 1)

4. Common mistake to avoid
   - DO NOT assume first value is used
   - Always verify which extruder/tool

Example from This Project:
* Test instrumentation:
  - Tool 1 (index 1) = PLA at 230°C
* Hardware/jig:
  - Tool 0 (index 0) = PETG at 250°C

Why This Matters:
* Prevents documentation errors
* Ensures accurate reproduction
* Critical for multi-material workflows
* Learned from v3.2.12 correction

This section ensures future .3mf analysis
is done correctly for multi-tool printers.

dvi3v - News

Version 3.2.13.build (2026-03-14)
==================================
Correction: Test instrumentation material (PLA not PETG)

IMPORTANT CORRECTION:
* Test instrumentation objects printed in BLACK PLA
* NOT PETG as incorrectly documented in v3.2.12

Corrected Settings:
* Material: Black PLA (matte finish)
* Tool: Prusa XL Tool 1 / Extruder 1 (second extruder)
* Temperature: 230°C (PLA) - NOT 250°C
* Bed: 60°C - NOT 80°C/60°C
* All other settings remain same (30mm/s, 0.2mm layers, 100% infill)

Why the Error Occurred:
* Prusa XL has multi-tool setup
* Tool 0: PETG at 250°C (for hardware/jig)
* Tool 1: PLA at 230°C (for test objects)
* Initial analysis missed "perimeter_extruder = 1" in config
* Incorrectly assumed Tool 0 was used

Documentation Updated:
* ManufacturingConfig.org - Corrected material and temperatures
* TestInstrumentation.org - Updated actual settings
* Added notes distinguishing test instrumentation from jig

Context Clarification:
* Test instrumentation (geometric shapes) = PLA
* Hardware/jig components (Base, VerticalBar) = PETG
* Different materials for different purposes
* Settings are specific to each category

dvi3v - News

Version 3.2.12.build (2026-03-14)
==================================
Manufacturing files integration and VERSION.org format

VERSION.org Format Update:
* Org-mode description lists now used
* Format: "- Key :: Value" throughout
* Cleaner, more structured, parseable
* Example:
  - Project Version :: 3.2.12
  - Test Data Date/Time :: 2026-03-10
  - Tests Included :: Baseline shapes

Manufacturing Files Integrated:
* All 8 geometric test shape .3mf files added
  - TestInstrumentation/GeometricShapes/*/
  - Circle25mm, Circle50mm, Circle75mm
  - Square25mm, Square50mm, Square75mm
  - Rectangle50x100mm, Triangle80mm

Actual Manufacturing Settings Documented:
* Real settings from Peter's prints:
  - Material: Black PETG (Prusa XL convenience)
  - Speed: 30mm/s (accuracy over 200mm/s max)
  - Printer: Prusa XL, 0.6mm HF nozzle
  - Temperature: 250°C/80°C bed
  - Layer height: 0.2mm, 100% infill

* Settings extracted from .3mf file analysis
* ManufacturingConfig.org fully updated
* TestInstrumentation.org documents actual setup

File Categorization:
* Manufacturing files = INSTRUMENTATION
  - .3mf files are tools to create test objects
  - Similar to .scad models
  - Test data = photos/SVGs from testing

* .tar-exclude clarified:
  - .3mf included (complete documentation)
  - .stl excluded (intermediate exports)

Ready for Testing:
* All test objects can now be reproduced exactly
* Complete manufacturing documentation
* Consistent Org-mode format throughout

dvi3v - News

Version 3.2.11.build (2026-03-14)
==================================
DevelopmentStandard.org enhancements

Documentation of Recent Learnings:
* DevelopmentStandard.org significantly expanded
* Captured lessons from v3.2.9 and v3.2.10

New Sections Added:

Org-mode Conventions:
* Description lists - Use :: (double colon)
* Structured data format - .org over .txt
* Complete rationale documented

Archive Creation Standards:
* tar source directory - Use . not *
* Rationale: Includes hidden files automatically
* Exclude archive being created to avoid warnings
* Comprehensive .tar-exclude requirements
* SVN $Id$ keywords in all scripts

ChangeLog Formatting:
* Use proper file names in entries
* Avoid unnecessary uppercase headers
* Consistency with NEWS format
* Sentence case section headers

These standards ensure consistent practices across
all future development iterations.

dvi3v - News

Version 3.2.10.build (2026-03-14)
==================================
Consistency corrections and improved exclusion list

ChangeLog Formatting:
* Removed unnecessary uppercase section headers
* Now uses proper file names (e.g., DataExchangeWorkflow.org)
* Consistent with NEWS file format

Script Improvements:
* CreateProjectArchive - Use current directory (.)
  - Cleaner: tar ... . instead of tar ... .tar-exclude *
  - Includes all files (hidden or not) automatically
  - Added $Id$ SVN keyword

* CreateTestDataArchive - Added $Id$ SVN keyword
  - Updated VERSION.txt → VERSION.org references

Exclusion List Enhanced:
* .tar-exclude - Comprehensive exclusions
  - Added: .jpeg extension
  - Added: .svn directory
  - Added: dvi3v-*.tar.xz (archives)
  - Added: *.bgcode, *.stl files
  - Added: Personal files (.hidden, ArchiveExchange, Notes.org)
  - User-provided with complete strategy

Documentation Corrections:
* All .txt references → .org throughout
  - TestInstrumentation.org
  - SvgMeasurement.org
  - TestResults.org

* TestResults/VERSION.txt → VERSION.org
  - Consistency with Org-mode format
  - Updated all references

dvi3v - News

Version 3.2.9.build (2026-03-14)
==================================
Archive creation scripts corrections and improvements

Script Improvements:
* CreateProjectArchive - Simplified and hardened
  - Now requires .tar-exclude file (aborts if missing)
  - Single tar invocation (factorized)
  - .tar-exclude included in archive

* CreateTestDataArchive - Timestamp added
  - Format: dvi3v-TestData-YYYY-MM-DD-HHMM.tar.xz
  - Handles multiple test batches per day
  - Example: dvi3v-TestData-2026-03-15-1430.tar.xz

Files Fixed:
* .tar-exclude - Now included (was missing from v3.2.8)
  - Excludes test data from TestResults/ only
  - Preserves SVG in TestInstrumentation/ (reference materials)

Documentation Corrections:
* DataExchangeWorkflow.org - Extraction workflow corrected
  - Archives extract to current directory
  - Added proper directory creation example
  - Updated timestamp references

* TestPlan.org - File references updated
  - measurements.txt → Measurements.org
  - notes.txt → Notes.org

Naming Clarification:
* CreateProjectArchive/CreateTestDataArchive use PascalCase
* These are internal scripts (self-documenting names)
* Not following Unix lowercase tradition (previous statement corrected)

Key Fixes:
1. .tar-exclude required and included
2. Multiple test batches per day supported
3. Correct extraction workflow documented
4. Reference materials preserved in archive

dvi3v - News

Version 3.2.8.build (2026-03-14)
==================================
File naming compliance and structured data format

OpenSCAD File Naming:
* All test object models renamed to match directory names
  - model.scad → Circle50mm.scad, Square50mm.scad, etc.
* Follows PascalCase convention
* Self-documenting file names
* Consistent with hardware/ naming

Documentation Format: Text → Org-mode
* All .txt files converted to .org format
  - Measurements.txt → Measurements.org
  - Notes.txt → Notes.org
  - PhysicalMeasurements.txt → PhysicalMeasurements.org

Why Org-mode:
* Structured data: Tables for measurements and comparisons
* Features: TODO states, checkboxes, properties, tags
* Export: Can generate LaTeX/PDF reports
* Consistency: Entire project uses Org-mode
* Plain text: Version-control friendly

New Templates:
* MeasurementsTemplate.org - Structured measurement recording
* NotesTemplate.org - Test notes with TODO tracking
* PhysicalMeasurementsTemplate.org - Print validation

Template Features:
* Tables for systematic data entry
* Checkboxes for assessment criteria
* TODO states for issue tracking
* Statistical analysis support (multiple measurements)

Documentation Updates:
* DataExchangeWorkflow.org - Clarified upload messages
* TestInstrumentation.org - Updated file formats and naming
* TestResults.org - Complete Org-mode examples
* All description lists use :: (Org-mode convention)

Ready for Testing:
* Structured templates for consistent data collection
* Statistical rigor (multiple measurements, std dev)
* Professional documentation format

dvi3v - News

Version 3.2.7.build (2026-03-10)
==================================
Data exchange workflow for testing phase

New Workflow: Dual Archive System
* Separate project and test data archives
* Project archive: Code, docs, infrastructure (~2-5MB)
* Test data archive: Photos, SVGs, debug images (~10-100MB+)
* Minimizes data transfer while preserving integrity

New Files:
* DataExchangeWorkflow.org - Complete workflow specification
* .tar-exclude - Exclusion list for project archives
* TestResults/VERSION.txt - Test data version tracking
* CreateProjectArchive - Script to build project archive
* CreateTestDataArchive - Script to build test data archive

Benefits:
* Efficient: No redundant binary data transfer
* Integrity: Complete project always available
* Flexible: Incremental test uploads (per category, weekly, etc.)
* Simple: Clear naming, standard tar commands

Usage:
  ./CreateProjectArchive              # Project code/docs
  ./CreateTestDataArchive             # All test data
  ./CreateTestDataArchive -c Baseline # Specific category

Starting v3.2.7:
* Project archives exclude large binaries
* Test data sent separately as needed
* Each archive correlates via VERSION.txt

dvi3v - News

Version 3.2.6.build (2026-03-10)
==================================
Complete geometric test models with BOSL2

Documentation Organization:
* SvgMeasurement.org moved to TestInstrumentation/ (better location)

Geometric Shapes - All Models Complete:
* All 8 test object models now created
* All use BOSL2 primitives consistently:
  - cyl() for circles (instead of cylinder())
  - cuboid() for squares/rectangles (instead of cube())
  - regular_ngon(n=3) for equilateral triangle

New Models Created:
* Circle25mm, Circle75mm (25mm, 75mm diameter)
* Square25mm, Square75mm (25mm, 75mm sides)
* Rectangle50x100mm (50mm × 100mm)
* Triangle80mm (equilateral, 80mm sides)

Updated Models:
* Circle50mm, Square50mm - Converted to BOSL2

Each Model Includes:
* Precise ground truth dimensions
* BOSL2 primitives with anchor=BOTTOM
* Comprehensive printing notes
* Post-print validation instructions
* Geometric validation formulas (diagonals, heights, circumradius)

Ready for Test Instrumentation Manufacturing:
* All models printable with consistent settings
* Black PLA, 0.2mm layers, 100% infill
* Documented tolerance: ±0.2mm

dvi3v - News

Version 3.2.5.build (2026-03-10)
==================================
Naming convention compliance and documentation standardization

File System Changes:
* All directories renamed to PascalCase (DevelopmentStandard compliance)
  - TestInstrumentation/, TestResults/, GeometricShapes/, etc.
  - All subdirectories: Circle50mm/, Square50mm/, etc.

Documentation Standardization:
* All .md files converted to .org format
  - TestInstrumentation.org (replaces README.md)
  - TestResults.org (replaces README.md)
* Obsolete hardware/README.md removed (pre-v3.2.0 slider design)
* SvgMeasurement.org: New comprehensive guide
  - Four measurement methods (grep, Inkscape, xmllint, Python)
  - Complete examples and scripts
  - Validation workflows

Reference Card:
* ISO 12233 standard resolution chart added
  - ISO_12233-reschart.pdf (ready to print)
  - ISO_12233-reschart.svg (vector version)
  - Industry-standard camera calibration target

DevelopmentStandard Updates:
* File Naming section enhanced with exceptions:
  - Executable programs: lowercase (Unix tradition)
  - Tool-imposed naming (autotools, Make, Git)
  - Standard conventions (README, LICENSE, etc.)

Corrections:
* ManufacturingConfig.org: M3 → M6 screws, printer bed clarification

dvi3v - News

Version 3.2.4.build (2026-03-09)
==================================
Manufacturing files integration and analysis

Manufacturing Context:
* Six .3mf files added to hardware/ directory
  - Complete PrusaSlicer configurations for all components
  - PETG material, 0.2mm layers, 15% gyroid infill
  - Production-proven settings
* ManufacturingConfig.org: Comprehensive manufacturing documentation
  - Extracted analysis from .3mf files
  - Design intent vs actual manufacturing comparison
  - Material, layer height, infill rationale
  - Print orientation strategies
  - Lessons learned from production

Key Manufacturing Insights:
* PETG chosen for structural strength (not PLA)
* 0.2mm layers eliminate wobbling (improved from 0.32mm)
* VerticalBar prints diagonally to fit 250×220mm bed
* Support-free design through geometry optimization
* High-contrast colors (red base, white structures) aid vision

File Organization:
* .3mf files stored alongside .scad files (user convention)
* Naming: Base-<part>_enfolding.3mf pattern
* Ready for reproduction or modification

dvi3v - News

Version 3.2.3.build (2026-03-07)
==================================
Test infrastructure and documentation standardization

Documentation:
* All Org-Mode files now have standardized headers
* ReferenceCard.org: Complete calibration card specification

Hardware:
* VerticalBar.scad: User improvements (stability, height, print profile)
  - Junction support increased, wobble eliminated
  - 20mm taller for better A4 visibility
  - Now prints diagonally on standard bed

Test Infrastructure:
* test_instrumentation/ directory created (11 dirs)
  - Reference card specifications
  - Geometric shape OpenSCAD models with ground truth dimensions
* test_results/ directory created (46 dirs)
  - Organized by TestPlan.org categories
  - Ready for test execution data
* Complete documentation (README.md in each hierarchy)
* Example models: circle_50mm, square_50mm

Ready to Begin Testing:
* Print geometric shapes from test_instrumentation models
* Execute tests per TestPlan.org
* Upload results incrementally

dvi3v - News

Version 3.2.2.build (2026-03-06)
==================================
Documentation corrections and enhancements

Corrections:
* ChangeLog: Fixed Print module names, removed cruft references
* DevelopmentStandard.org: Corrected afc naming convention
* FutureResearch.org: Removed non-existent file reference

New Documentation:
* TestPlan.org: Comprehensive 6-week testing plan
  - 10 test categories, 100+ test scenarios
  - Quality metrics and success criteria
  - Phased execution approach
* DebugFileUpload.org: Comprehensive debug file upload guide
  - Which files to upload and why
  - Diagnostic questions
  - Known issues and workarounds

Enhancements:
* FutureResearch.org: Added jig adaptability section
  - A3, A5, Letter paper size variants possible
  - Minor CameraBase/VerticalBar modifications needed
* README: Updated to reference DebugFileUpload.org

dvi3v - News

Version 3.2.0.build (2026-03-05)
==================================
MAJOR REDESIGN - Functional jig successfully manufactured and tested!

Hardware Changes:
* Complete redesign of camera jig based on manufacturing experience
* Camera height now FIXED at calculated 250mm (no slider needed)
* Base is now sub-assembly: left + right + union truss + 4 screws
* Fits standard 250x220mm 3D printer beds
* High-contrast design (red/white) aids computer vision
* Successfully captures full A4 sheet in camera frame

New Files:
* CameraBase.scad - replaces Arm.scad, designed for Google Pixel 9a
* VerticalBar.scad - replaces SlideBar.scad (no sliding)

Removed Files:
* Arm.scad, Slider.scad, SliderBarBase.scad (no longer needed)

Naming Conventions:
* gA4Height → gA4Depth (consistent with Y-axis)
* Width/Depth/Height now consistently aligned with X/Y/Z axes

New OpenSCAD Patterns:
* Assert validation: afc0 = assert(condition, "message")
* Local modules: lAttachmentHoles(), lUnionTruss(), etc.
* Fillet reinforcement at critical junctions
* Test modules: TestAttachmentHoles()
* Print modules: PrintLeftPart() with high $fn
* Parametric part selection: BaseComponent("left"|"right"|"union"|"screw")
* Sub-assembly design for printability

Documentation:
* DevelopmentStandard.org updated with all new patterns
* Comprehensive ChangeLog documents design decisions
* Bug reporting section added to README

dvi3v - News

Version 3.1.17.build (2026-02-17)
==================================
* Strategic redesign: camera height fixed at ~250mm above A4
* Fixed $preview: printable geometry always renders (never guarded)
* Assembly: use instead of include eliminates redundancy
* DevelopmentStandard: $preview and include/use documented
* New: gCameraHeight in CommonParameters.scad


Version 3.1.16.build (2026-02-16)
==================================
* VERSION: Comments restored, versioning documented in README
* Base: Fixed rendering error, reduced for 250x220mm beds
* Arm: Camera opening 70x25mm, more toward back
* SliderBarBase: Integral body with feet, hole top-to-bottom
* Assembly: ZERO redundancy - truly minimal now
* All components render correctly

Version 3.1.15.build (2026-02-16)
==================================
* Copyright: Added Anthropic AI attribution to ALL OpenSCAD files
* Base: Fixed geometry warning, reduced size for 3D printers
* Arm: Camera opening 50x25mm, positioned higher
* SliderBarBase: Rewritten - mounting feet, vertical hole orientation
* Slider: TRUE vertical hole (goes through), proper orientation
* Assembly: ZERO redundancy - each component once only

Version 3.1.14.build (2026-02-15)
==================================
* Base rewritten from BaseExample.scad concept
* Arm ridge open at front, camera opening 40x20mm
* SliderBarBase/Slider holes oriented for VERTICAL slide bar
* Assembly: NO redundancy, each component once
* All issues from review addressed

Version 3.1.13.build (2026-02-15)
==================================
* Arm ridge now continuous frame with rounded corners
* Camera opening: rounded rectangle (20x30mm) not circle
* Assembly cleaned: no redundancy, single camera reference
* SlideBar anchor BOTTOM verified
* Base: still needs concept example (awaiting user input)

Version 3.1.12.build (2026-02-15)
==================================
* Base corrected: screw holes HORIZONTAL through bottom wall
* Arm ridges fixed: now at platform edges, not floating
* Arm orientation: faces BACK toward paper (not right)
* Assembly cleaned: no redundancy, correct orientation
* Code readability: BOSL2 functions (up, back, left, right, etc.)
* Learning: Always use BOSL2 positioning/rotation functions

Version 3.1.11.build (2026-02-15)
==================================
* Base corrected to true U-shape with mounting ears
* SliderBarBase redesigned with vertical body and mounting feet
* SlideBar now perpendicular to base (yrot 90° only)
* Arm has camera platform ridges and objective opening
* Teardrop orientations corrected (vertex UP)
* Based on user sketches and BaseAgain.jpeg

Version 3.1.10.build (2026-02-15)
==================================
* Created GeometryUtils.scad for reusable geometric functions
* Assembly shows realistic final positions with rotations
* SlideBar properly rotated from horizontal print to vertical use
* All screws visible in assembly for alignment checking
* Base maintains U-shaped design (not reverted)
* Centralized rounding and teardrop calculations

Version 3.1.9.build (2026-02-15)
=================================
* Fixed rounding constraints using SafeFilletRadius()
* Corrected teardrop cap_h calculation (was too small, not too big!)
* Documented OpenSCAD rounding and teardrop requirements
* Added DevelopmentStandard sections on geometric constraints
* Learning: cap_h >= diameter/sqrt(2) ≈ 0.707*d

Version 3.1.8.build (2026-02-15)
=================================
* Hardware design corrections based on review
* Base redesigned as U-shaped channel (no internal material)
* Fixed BOSL2 teardrop cap_h assertion errors
* Changed to screw_hole() for vertical holes
* Removed phi annotation from SlideBar
* Improved Assembly view (cohesive final result)
* More elegant base design with nice rounding

Version 3.1.7.build (2026-02-15)
=================================
* Hardware design added: Adjustable camera stand
* OpenSCAD files in hardware/ subdirectory
* Golden rectangle slide bar (φ ratio)
* Straight arm design (easy printing)
* M6 wing screws for hand tightening
* Complete assembly and component documentation
* Integrated into main project (not separate delivery)

Version 3.1.6.build (2026-02-13)
=================================
* Fixed autoreconf warnings: pdf-local instead of pdf target
* Removed -Werror from automake to allow GNU Make extensions
* Added explicit GNU Make requirement check in configure
* Ensured dvi3v.in is NOT executable (only generated dvi3v is)
* Enhanced DevelopmentStandard with GNU Make and automake knowledge

Version 3.1.5.build (2026-02-13)
=================================
* Makefile improvements: PDF documentation generation
* Optional 'make pdf' target (requires Emacs + TexLive)
* Proper cleaning targets (CLEANFILES, MAINTAINERCLEANFILES)
* LaTeX byproducts cleanup (.log, .lot, .tex, etc.)
* Executable permissions set for user only (security improvement)
* ditaa dependency removed (replaced with portable ASCII art)
* Fixed file name references to PascalCase convention
* README updated with autotools bootstrap instructions
* DevelopmentStandard enhanced with cleaning targets documentation

Version 3.1.4.build (2026-02-12)
=================================
* Four-digit version: major.minor.sequence.build
* Build number is SVN revision of VERSION file
* Example: 3.1.4.45 means VERSION file is at revision 45
* configure.ac extracts revision from $Revision$ keyword
* Fully automatic - no manual build number updates
* Falls back to 3.1.4.0 if $Revision$ not yet expanded

Version 3.1.4 (2026-02-12)
==========================
* VERSION file as single source of truth for version
* SVN $Revision$ keyword tracks version changes
* configure.ac reads version from VERSION file
* Man page (dvi3v.1) now generated from template (dvi3v.1.in)
* Both script and man page use same @VERSION@ from VERSION file
* No repository access needed - $Revision$ expanded in distributed files

Version 3.1.2 (2026-02-12)
==========================
* Autotools template system for version management
* Script renamed dvi3v (was dvi3v.sh in old comments)
* Version now substituted by configure from AC_INIT
* dvi3v.in template with @VERSION@ placeholder  
* SVN Id keyword added to script
* Copyright holder updated to Peter Felecan

Version 3.1.1 (2026-02-12)
==========================
* Corrections following review
* Email address updated to pfelecan@gmail.com
* Org-mode headers updated to match Constitution template exactly
* SVN Id keywords added to configure.ac and Makefile.am
* Sequence number incremented for modifications

Version 3.1.0 (2026-02-12)
==========================
* Project reorganization to follow Constitution and DevelopmentStandard
* File naming updated to PascalCase convention
* Unified ChangeLog in GNU format
* Org-mode local variables corrected
* Autotools infrastructure added

Version 2.9 (2026-02-07)
========================
* Added user-adjustable hole filling (-n option with strength parameter)
* Improved debug directory cleanup with lockfile protection
* Allow fill strength range 50-150%

Version 2.7 (2026-02-07)
========================
* Added automatic hole filling using morphological closing
* Improved auto-threshold calculation using mean intensity

Version 1.0 (2026-02-06)
========================
* Initial release
* Object extraction from photographs
* SVG generation with real-world dimensions
* A4 paper scale reference detection
* Color support (names and hex codes)
* Margin specification in millimeters
