Skip to content

Make QuickWeek publication-ready (docs, community health, CI) - #1

Merged
marsvogel merged 5 commits into
mainfrom
chore/community-best-practices
Jul 17, 2026
Merged

Make QuickWeek publication-ready (docs, community health, CI)#1
marsvogel merged 5 commits into
mainfrom
chore/community-best-practices

Conversation

@marsvogel

Copy link
Copy Markdown
Owner

Makes QuickWeek publication-ready, modelled on PromptQuittung and current open-source best practices (backed by a deep research pass). The app's behaviour is unchanged; the UI stays German on purpose — everything around the code is now in English.

Verified locally (Xcode 26.6)

  • swiftlint lint --strict0 violations
  • xcodebuild test -scheme QuickWeek5 tests, 0 failures
  • xcodebuild -target QuickWeek -configuration Release buildBUILD SUCCEEDED, build/Release/QuickWeek.app (CFBundleVersion = git commit count, copyright = marsvogel)
  • actionlint on all workflows → 0 errors; SwiftLint pin checksum verified against the real download

Code

  • Extract the ISO-week / calendar-grid / weekend logic into a pure, testable WeekCalculator; AppDelegate and CalendarView now use it (single source of truth).
  • New hosted XCTest target + tests (ISO week incl. week-53 years, zero-padded KW09, month-grid shape, weekend) and a shared scheme so CI can test.
  • Translate the build-number build phase + helper script to English; normalise the Info.plist copyright to marsvogel (no real name leaks).

Docs & community health

  • README (English): theme-aware hero image, one-line what/why, macOS 14+ requirement, an honest unsigned-app install flow (Sequoia removed right-click→Open → System Settings ▸ Privacy & Security ▸ Open Anyway, with the German labels), usage, a privacy & trust section (no network/data, sandboxed, verifiable via source + attestation + checksum), build-from-source.
  • MIT LICENSE, CODE_OF_CONDUCT (Contributor Covenant 2.1), CONTRIBUTING, SECURITY (QuickWeek's real, minimal threat model), SUPPORT, CHANGELOG (Keep a Changelog), AI_DISCLOSURE (YAML front-matter; the repo is AI-generated with Claude Code — the "Built with Claude Code" badge links here), CLAUDE.md.
  • .github/: CODEOWNERS, Dependabot (grouped Actions), issue forms + PR template + release.yml.
  • Brand images committed under docs/ (hero-light, hero-dark, social-preview), rendered pixel-faithfully from the actual CalendarView.

CI / supply chain

Three workflows, every action SHA-pinned with a version comment, permissions: {} deny-all top-level + per-job minimum, persist-credentials: false:

  • build.yml — SwiftLint (pinned + checksum-verified) → tests → ad-hoc-signed Release build → ditto ZIP + SHA-256 → on main, an auto GitHub Release with a build-provenance attestation (gh attestation verify QuickWeek.zip -R marsvogel/QuickWeek). fetch-depth: 0 keeps the git-commit build number correct in CI.
  • codeql.yml — Swift (manual build) + Actions.
  • scorecard.yml — weekly OpenSSF Scorecard.

Not in this PR — repo settings you apply at publish time

Repo About (description/topics/homepage), the protect-main ruleset, squash-only + delete-branch, Secret Scanning + Push Protection, Private Vulnerability Reporting, the social-preview upload, pinning the repo, and 2–3 seeded good first issues live at the GitHub-settings layer, not in files. I prepared a copy-paste gh script + checklist for all of it (delivered separately) — nothing was applied automatically, and the repo has not been made public.

Decisions confirmed with you

English README/repo (German UI kept) · GitHub Releases distribution · unit tests added · marsvogel as copyright holder · whole repo disclosed as AI-generated.

marsvogel and others added 4 commits July 17, 2026 20:30
… tooling

Move the ISO-week / calendar-grid / weekend logic into a pure WeekCalculator
so it can be unit-tested, and point AppDelegate and CalendarView at it. Add a
hosted XCTest target with tests for the calendar math, plus a shared scheme so
CI can run `xcodebuild test`. Translate the build-number build phase and helper
script to English and normalize the Info.plist copyright to marsvogel.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add an English README with a theme-aware hero image, an honest unsigned-app
install flow, and a trust/verification section; MIT LICENSE, CODE_OF_CONDUCT,
CONTRIBUTING, SECURITY, SUPPORT, CHANGELOG, AI_DISCLOSURE, and CLAUDE.md. Add
.github metadata (CODEOWNERS, Dependabot, issue/PR templates, release notes
config) and three SHA-pinned, least-privilege workflows: build+test+release
(with SHA-256 checksum and build-provenance attestation), CodeQL, and OpenSSF
Scorecard. Commit hero (light/dark) and social-preview images under docs/.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Docs: say 'not notarized' instead of 'unsigned' (the app is ad-hoc signed) in README and SUPPORT.
- CI: make the release step idempotent so a re-run on the same commit does not hard-fail.
- release.yml: exclude author 'dependabot[bot]' (the real login) so bot PRs are dropped from notes.
- WeekCalculator: track the system time zone (autoupdatingCurrent) so the week updates after a runtime TZ change.
- Align CFBundleDisplayName to 'QuickWeek' (was 'Quick Week') to match the product name everywhere else.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Per direction change, the interface is now fully English instead of German:
menu bar shows 'CW29' (calendar week) instead of 'KW29', month names use en_US
(July 2026), weekday initials are M T W T F S S, and the popover/menu read
'Today' and 'Quit'. Update the tests, the README/CONTRIBUTING/CLAUDE/CHANGELOG,
and re-render the hero (light/dark) and social-preview images to match. The
ISO-8601 week math is unchanged; 'Kalenderwoche' is kept only as an SEO keyword.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Comment thread CHANGELOG.md Outdated

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Eine CHANGELOG.md wäre mir in Zukunft zu viel Arbeit. Bitte entfernen

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done — CHANGELOG.md removed in 3e4f1a5. Release notes are still generated automatically per release (--generate-notes + .github/release.yml), so no manual upkeep.

Per PR feedback: a hand-maintained CHANGELOG is more upkeep than wanted.
Release notes are still generated automatically per release (--generate-notes +
.github/release.yml), so history stays discoverable without the file.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@marsvogel
marsvogel merged commit 70a2ba9 into main Jul 17, 2026
2 of 4 checks passed
@marsvogel
marsvogel deleted the chore/community-best-practices branch July 17, 2026 19:36
marsvogel added a commit that referenced this pull request Jul 17, 2026
* refactor: extract testable WeekCalculator, add tests, scheme, English tooling

Move the ISO-week / calendar-grid / weekend logic into a pure WeekCalculator
so it can be unit-tested, and point AppDelegate and CalendarView at it. Add a
hosted XCTest target with tests for the calendar math, plus a shared scheme so
CI can run `xcodebuild test`. Translate the build-number build phase and helper
script to English and normalize the Info.plist copyright to marsvogel.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs: add README, community health files, CI, and brand images

Add an English README with a theme-aware hero image, an honest unsigned-app
install flow, and a trust/verification section; MIT LICENSE, CODE_OF_CONDUCT,
CONTRIBUTING, SECURITY, SUPPORT, CHANGELOG, AI_DISCLOSURE, and CLAUDE.md. Add
.github metadata (CODEOWNERS, Dependabot, issue/PR templates, release notes
config) and three SHA-pinned, least-privilege workflows: build+test+release
(with SHA-256 checksum and build-provenance attestation), CodeQL, and OpenSSF
Scorecard. Commit hero (light/dark) and social-preview images under docs/.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix: address PR review findings

- Docs: say 'not notarized' instead of 'unsigned' (the app is ad-hoc signed) in README and SUPPORT.
- CI: make the release step idempotent so a re-run on the same commit does not hard-fail.
- release.yml: exclude author 'dependabot[bot]' (the real login) so bot PRs are dropped from notes.
- WeekCalculator: track the system time zone (autoupdatingCurrent) so the week updates after a runtime TZ change.
- Align CFBundleDisplayName to 'QuickWeek' (was 'Quick Week') to match the product name everywhere else.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* feat: switch the UI to English

Per direction change, the interface is now fully English instead of German:
menu bar shows 'CW29' (calendar week) instead of 'KW29', month names use en_US
(July 2026), weekday initials are M T W T F S S, and the popover/menu read
'Today' and 'Quit'. Update the tests, the README/CONTRIBUTING/CLAUDE/CHANGELOG,
and re-render the hero (light/dark) and social-preview images to match. The
ISO-8601 week math is unchanged; 'Kalenderwoche' is kept only as an SEO keyword.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs: remove CHANGELOG.md

Per PR feedback: a hand-maintained CHANGELOG is more upkeep than wanted.
Release notes are still generated automatically per release (--generate-notes +
.github/release.yml), so history stays discoverable without the file.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant