Skip to content

Releases: ercanatay/cybokron-dock-groups

v0.6.5

Choose a tag to compare

@github-actions github-actions released this 20 Oct 20:09

[0.6.5] - 2026-10-20

Fixed

  • Updates signed by a third party or left ad hoc are rejected when the running copy is Developer ID
    signed (codesign --verify --strict -R with a Developer ID requirement for the running team and
    bundle identifier); the staged DMG signature is verified before mounting. Copies signed ad hoc
    (v0.6.2 and earlier) keep accepting any intact signature, so they can still update
  • CI supply chain: every GitHub Action is pinned to a commit SHA (version in a comment), checkouts
    don't persist the token, the release job runs in a release environment (v* tags only, maintainer
    approval), only codesign may use the imported signing key, and a .p12 holding more than the
    Developer ID Application identity stops the release job
  • Update and changelog feed overrides are enabled only in development builds: release builds ignore
    CYBOKRON_UPDATE_FEED_URL, CYBOKRON_RELEASES_FEED_URL, CYBOKRON_CHANGELOG_FEED_URL,
    CYBOKRON_UPDATE_DRY_RUN and CYBOKRON_SIMULATE_SIGN_FAILURE (#if DEBUG)
  • Release notes rendering takes linear time: HTML comments are removed in one pass instead of with a
    lazy regular expression (quadratic on text full of <!--), long list items and code blocks no
    longer copy themselves line by line, and notes longer than 250,000 characters are cut with a note
  • The bundle build number matches the marketing version (major × 10000 + minor × 100 + patch, e.g.
    0.6.4 → 604 instead of 1) so LaunchServices resolves the newest installed copy;
    scripts/check-version.sh checks it everywhere it's written and in the built app (CI)
  • Link safety: cybokrondockgroups://launch/… and hide/… links share one 5-second limit, so only
    one group's apps are opened or hidden per 5 seconds whichever group the links name (menus,
    shortcuts, Siri and Shortcuts aren't limited); the quit dialog's Quit / Force Quit Apps button is
    enabled 0.7 seconds after it appears (Cancel and Escape work at once)
  • Standalone group agents follow a configuration-change notification's new bundle path only when
    it's an .app directly in the agents folder with the agent's own bundle identifier (any process
    can post the notification)
  • Backup import refuses files over 5 MB before reading them, and drops app locations that aren't an
    absolute path to a .app bundle (an item known only by such a location is left out)
  • The usage monitor records events only while Most Used is enabled (the setting is checked at every
    launch and activation); turning it off keeps the history recorded so far, and turning it back on
    records new events. The Settings → Most Used footer says so (new string, English only for now)
  • GitHub API answers (update checks, Other Versions…, Changelog) must come, after any redirect, from
    api.github.com / github.com over HTTPS (or from the host a development override asked)
  • Links with a user name or password (https://github.com%2F@evil.example) in release notes show
    as plain text, and such a release page address is ignored
  • Import Settings… keeps the last three *.pre-import-<time>.json copies instead of only the
    latest (ordered by time and counter, collision-safe)
  • SECURITY.md describes the app's actual network use; README notes that the quarantine workaround
    is only for releases before v0.6.3 and how ad hoc signed copies (v0.6.2 and earlier) accept updates

Added

  • Settings → Updates → Other Versions… warns before installing a version older than 0.6.5, which
    lacks these security fixes (new strings, English only until the next translation pass)

Full Changelog: v0.6.4...v0.6.5

v0.6.4

Choose a tag to compare

@github-actions github-actions released this 20 Oct 10:56

[0.6.4] - 2026-10-20

Added

  • CI staples the app itself before stapling the DMG (fixes 'Notary Ticket Missing' for the bundled app)

Fixed

  • Local UNIVERSAL=1 builds no longer fail (or silently use stale debug data) in the App Intents metadata step; the script now looks up the whole-module *-primary.swiftconstvalues file and restricts the search to the current configuration

Full Changelog: v0.6.3...v0.6.4

v0.6.3

Choose a tag to compare

@github-actions github-actions released this 20 Oct 05:58

[0.6.3] - 2026-10-19

Added

  • First notarized release: the app is signed with a Developer ID Application certificate
    (hardened runtime, secure timestamp), and the universal DMG is Developer ID signed, notarized by
    Apple and stapled, so macOS opens it without the “Apple could not verify …” warning. Notarization
    was tested locally first: the notarized build passes spctl and stapler validate.

Changed

  • Because the signature changes from ad hoc to Developer ID, macOS asks for Accessibility access
    once more after updating to this version (System Settings → Privacy & Security → Accessibility);
    later Developer ID releases keep it.

Full Changelog: v0.6.2...v0.6.3

v0.6.2

Choose a tag to compare

@github-actions github-actions released this 19 Oct 09:29

[0.6.2] - 2026-10-19

Fixed

  • Release notes security: links in update-window and settings changelog notes are now filtered to https/mailto only; release page URL must be https
  • Dock safety: if the Dock's persistent-apps list cannot be read, groups are no longer closed or rewritten; a timestamped backup of the Dock is kept (last 6) before every write, and failed writes keep pending dock additions instead of silently disabling groups
  • Safety: clicking a cybokrondockgroups://quit/... link now shows a confirmation dialog, with a distinct "Force Quit Apps" button for ?mode=force
  • Backup restore/merge now re-adds missing Dock icons for standalone groups instead of disabling them on the next launch
  • Downloaded update is verified with codesign --verify --strict (Developer ID builds also require a matching Team ID; ad-hoc builds still accepted)
  • Miscellaneous: automatic update checks are skipped while the update window shows an offer or failure; "install picked" while an update is under way warns instead of failing silently; less risky copyAside write order plus collision-safe filenames; release notes script handles fenced code blocks; diagnostics report redacts the home directory; DMG name matching compares the full version number; localization test now catches mixed positional and non-positional placeholders

Added

  • CI release now reproduces the version section from CHANGELOG.md as the release body; a version-consistency check (scripts/check-version.sh) runs before test and release jobs

Full Changelog: v0.6.1...v0.6.2

v0.6.1

Choose a tag to compare

@github-actions github-actions released this 18 Oct 22:22

[0.6.1] - 2026-10-19

Added

  • Settings → Changelog tab: release notes fetched from GitHub Releases shown as an accordion (latest open by default, Latest/Installed/Pre-release badges), current-version display, manual refresh with cache (works offline from changelog-cache.json)

Full Changelog: v0.6.0...v0.6.1

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 21:38

[0.6.0] - 2026-10-19

Added

  • 24 new languages: Azerbaijani, German, French, Spanish, Italian, Brazilian Portuguese, Dutch,
    Swedish, Polish, Czech, Romanian, Hungarian, Greek, Bulgarian, Ukrainian, Russian, Arabic (RTL),
    Farsi (RTL), Hindi, Simplified Chinese, Japanese, Korean, Indonesian, Vietnamese — 463 keys each;
    the language picker now offers 26 languages.

Full Changelog: v0.5.9...v0.6.0

v0.5.9

Choose a tag to compare

@github-actions github-actions released this 18 Oct 20:31

[0.5.9] - 2026-10-18

Changed

  • Settings panes in a sidebar: Popup, Shortcuts & Siri, Most Used, Updates and Backup are now
    listed in a sidebar on the left (on the right in right-to-left languages), as in System Settings,
    instead of a tab bar across the top. The panes keep their width and scroll as before, the window
    is still as tall as the screen has room for (at most 640 points), and the pane last shown is
    selected again the next time Settings opens.

Full Changelog: v0.5.8...v0.5.9

v0.5.8

Choose a tag to compare

@github-actions github-actions released this 18 Oct 19:44

[0.5.8] - 2026-10-18

Fixed

  • Settings window scrolls on any screen: the Popup, Most Used, Updates and Backup tabs still
    sized their form to its full height, so it didn't scroll, its bottom was out of reach and it
    covered the tab bar; the Shortcuts tab was taller than its pane. Every tab now fills the pane and
    scrolls, the pane is as tall as the screen has room for (at most 640 points), and the window is
    kept inside the screen even when its saved position isn't.

Full Changelog: v0.5.7...v0.5.8

v0.5.7

Choose a tag to compare

@github-actions github-actions released this 18 Oct 18:39

[0.5.7] - 2026-10-18

Fixed

  • Scrollable Settings panes: every Settings tab now has the same fixed height and scrolls, instead
    of the window growing past the screen (Popup, Updates, Backup, Most Used were cut off).

Added

  • Language picker at the top of Settings → Popup: System (the language macOS gives the app,
    named in it) or any language the app has a string table for, each named in itself. The choice is
    stored in preferences.json ("language": "system" or the code) and applied at launch as the
    app's own AppleLanguages, so it shows after a restart: the section then offers Restart Now,
    which also quits the running standalone groups' apps so they start in the new language too.
    System removes only the value the app set itself, not one chosen in System Settings. The list of
    languages (SupportedLanguages, 26 with their native names) is the one place to update when a
    translation is added; the tests check every .lproj folder has an entry.
  • Localization framework: the app's user-facing text — menus, popup, group window, Settings,
    the update and About windows, alerts and the core's error messages — comes from string tables,
    Resources/<language>.lproj/Localizable.strings, with the English text in en.lproj (listed in
    docs/l10n-keys.md); a missing translation falls back to English. Both build paths copy every
    .lproj folder into the app, and standalone groups' apps get a copy. No translations yet: the
    app is still in English. Siri and Shortcuts texts follow separately.

Full Changelog: v0.5.6...v0.5.7

v0.5.6

Choose a tag to compare

@github-actions github-actions released this 18 Oct 17:19

[0.5.6] - 2026-10-18

Added

  • Other Versions… in Settings → Updates: lists the project's published GitHub releases (no
    drafts or prereleases), newest first, with their dates; the running one is marked Current. Each
    other release has Install (disabled with "No download" when it has no universal DMG), which
    asks first, then downloads, checks and installs it in the update window exactly like an update —
    older or newer — and relaunches. When the list can't be loaded (offline, GitHub's rate limit) it
    says why, with Try Again and a link to the releases page.
  • Going back to an older version skips every newer published release (and the one left behind) in
    automatic checks, so the app doesn't keep offering what you just left; Check for Updates…
    still offers them. Going up from Other Versions… clears the skipped versions. Settings → Updates
    shows them ("Skipped newer versions: …", with Clear) or "Back on the latest path".

Changed

  • update-state.json keeps a list of skipped versions (skippedVersions); the newest is also
    written as skippedVersion, the key versions up to 0.5.5 read, so an older version installed
    from Other Versions… keeps quiet about the newest release too. The diagnostics report lists them.

Full Changelog: v0.5.5...v0.5.6