<feed xmlns='http://www.w3.org/2005/Atom'>
<title>domain-dig.git/DomainDig/DomainViewModel+Export.swift, branch v5.0.0</title>
<subtitle>local-first ios domain inspection toolkit. dns, tls, rdap, audit.
</subtitle>
<id>http://git.krz.sh/krz/domain-dig.git/atom?h=v5.0.0</id>
<link rel='self' href='http://git.krz.sh/krz/domain-dig.git/atom?h=v5.0.0'/>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/domain-dig.git/'/>
<updated>2026-07-25T05:00:29+00:00</updated>
<entry>
<title>refactor: extract export/portability into DomainViewModel+Export (v5 step 4, 3/n)</title>
<updated>2026-07-25T05:00:29+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-07-25T04:59:07+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/domain-dig.git/commit/?id=e5d6c6c30df78e1d9b07088c256421aa663cb173'/>
<id>urn:sha1:e5d6c6c30df78e1d9b07088c256421aa663cb173</id>
<content type='text'>
Third slice of the DomainViewModel decomposition, stacked on the monitoring
split.

- Moves the export/data-portability surface into DomainViewModel+Export.swift:
  the single-report/batch/tracked-domain/timeline/workflow exporters, the
  full-backup and portable-slice exporters, prepareDataImport/applyDataImport,
  and persistCurrentAppSettings. The export-only WorkflowExportPayload struct
  moves with them. Pure move, no logic changes.
- The four report-projection helpers the exporters call (currentBatchReports,
  reports(for:), timelineReports, workflowReports) are promoted private -&gt;
  internal and stay on the main type: they build DomainReports through the
  shared report layer (report(for:)/reportBuilder), so they belong with
  inspection, not export. Those four visibility drops are the only non-deletion
  edits to DomainViewModel.

DomainViewModel.swift: 4601 -&gt; 4434 lines. App builds clean; unit suite 58/58.
No project.pbxproj change (DomainDig/ is a synchronized group).
</content>
</entry>
</feed>
