Skip to content

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 29 Jul 15:12
· 12 commits to main since this release
v0.8.0: choose your export format (CSV or a sortable HTML report)

'Export open tabs to CSV…' becomes 'Export open tabs…' and asks for a format
first: Spreadsheet (CSV), Web page (HTML), or Cancel. The choice drives the file
extension; the rest of the flow (re-poll, timestamped name, reveal in Finder) is
unchanged.

New HTML report (tabexport.write_html) is a self-contained single file:
- same columns as the CSV, reordered for reading (title/url before the flags,
  which otherwise pushed them behind seven metadata columns)
- clickable links, opened with rel=noopener noreferrer
- click a heading to sort, click again to reverse, with a ▲/▼ indicator;
  window/tab sort numerically (1,2,3,10,20 — not lexicographically)
- sticky header, zebra striping, light/dark aware, long text ellipsized with the
  full value as a tooltip, table wrapped in overflow-x
- loads nothing external; the one ~20-line script does only the sorting

Injection safety: tab titles/URLs are untrusted text going into HTML, so every
value is html.escape'd and only http(s) URLs are linkified — a javascript: URL
is shown as text, never as an href. Regression-tested.

Both formats now end with a provenance note (app name, version, repo) read from
appinfo.py via a shared disclaimer_text(), so it can't drift from the build. In
the CSV it's a blank row plus one trailing line; data rows still parse intact.

Tests: HTML escaping/linkifying, HTML-vs-CSV column parity, CSV footer safety.
README updated. Rationale and the keep-the-script decision are recorded in the
dossier (build-log Phase 11).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>