Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ All notable changes to MacDirStat are documented here. The format follows
[Keep a Changelog](https://keepachangelog.com/), and the project uses
[semantic versioning](https://semver.org/).

## [0.7.0] — not yet released
## [0.7.0] — 2026-11-07

Release notes for the GitHub Release: [`docs/release-notes/v0.7.0.md`](docs/release-notes/v0.7.0.md).
Release notes: [`docs/release-notes/v0.7.0.md`](docs/release-notes/v0.7.0.md).

### Added
- **The inventory.** The Cleanup window now has two columns. *Can be rebuilt* groups the cleanup
Expand Down
Binary file modified assets/icon/AppIcon.icns
Binary file not shown.
Binary file modified assets/icon/icon-256.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 0 additions & 8 deletions docs/release-notes/v0.7.0.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,5 @@
# MacDirStat 0.7.0

Draft for Pavol. Not published. To release: check the app on a Mac, then
`git tag v0.7.0 && git push origin v0.7.0` (the version in `Cargo.toml` is already 0.7.0).
The release workflow writes GitHub's generated notes, not this file; once it has run, replace
them with everything below the line: `gh release edit v0.7.0 --notes-file <this file minus
this preamble>`. Put the date in CHANGELOG.md's 0.7.0 heading at the same time.

---

This release changes how MacDirStat looks and what it asks you to decide. It is still free, still
reads your disk only on your Mac, and still deletes nothing until you confirm.

Expand Down
8 changes: 4 additions & 4 deletions scripts/make-icon.sh
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
#!/usr/bin/env bash
# Renders assets/icon/icon.svg to assets/icon/AppIcon.icns and the 256px window icon.
# macOS only: qlmanage draws the SVG, sips resizes, iconutil builds the .icns.
# macOS only: render-svg.swift draws the SVG on a transparent canvas (qlmanage fills
# white, which squared off the corners), sips resizes, iconutil builds the .icns.
# The outputs are committed; run this only after editing icon.svg.
set -euo pipefail

DIR="$(cd "$(dirname "$0")/../assets/icon" && pwd)"
WORK="$(mktemp -d)"
trap 'rm -rf "$WORK"' EXIT

qlmanage -t -s 1024 -o "$WORK" "$DIR/icon.svg" >/dev/null 2>&1
BASE="$WORK/icon.svg.png"
[ -f "$BASE" ] || { echo "qlmanage did not render icon.svg" >&2; exit 1; }
BASE="$WORK/icon.png"
swift "$(dirname "$0")/render-svg.swift" "$DIR/icon.svg" "$BASE" 1024

SET="$WORK/AppIcon.iconset"
mkdir "$SET"
Expand Down
19 changes: 19 additions & 0 deletions scripts/render-svg.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// Renders an SVG to a PNG with a transparent background (qlmanage fills white).
// Usage: swift scripts/render-svg.swift in.svg out.png 1024
// Exits 1 if the top-left pixel is not transparent, so a white-cornered icon can't ship.
import AppKit

let a = CommandLine.arguments
let size = Int(a[3])!
guard let svg = NSImage(contentsOf: URL(fileURLWithPath: a[1])) else { fatalError("cannot read \(a[1])") }
let rep = NSBitmapImageRep(bitmapDataPlanes: nil, pixelsWide: size, pixelsHigh: size, bitsPerSample: 8,
samplesPerPixel: 4, hasAlpha: true, isPlanar: false,
colorSpaceName: .deviceRGB, bytesPerRow: 0, bitsPerPixel: 0)!
NSGraphicsContext.saveGraphicsState()
NSGraphicsContext.current = NSGraphicsContext(bitmapImageRep: rep)
NSColor.clear.set()
NSRect(x: 0, y: 0, width: size, height: size).fill()
svg.draw(in: NSRect(x: 0, y: 0, width: size, height: size))
NSGraphicsContext.restoreGraphicsState()
try! rep.representation(using: .png, properties: [:])!.write(to: URL(fileURLWithPath: a[2]))
if rep.colorAt(x: 0, y: 0)!.alphaComponent > 0.01 { print("corner is not transparent"); exit(1) }
Loading