Skip to content

Releases: talentdedcat/Veloop

Veloop 0.3.0

Choose a tag to compare

@talentdedcat talentdedcat released this 13 Aug 06:39

What changed

  • Added localized software update checks with bilingual release notes and a manual status in Veloop settings.
  • Kept every update action user-controlled: skip the version, be reminded after 24 hours, or open the official GitHub Release page.
  • Hardened update metadata validation, response-size limits, failure diagnostics, and recovery after system clock changes.

Verification

  • Passed all 266 Swift tests.
  • Passed 40 update-related tests with Thread Sanitizer enabled.
  • Verified the universal DMG, ad-hoc signatures, arm64 and x86_64 binaries, local installation, and idle resource usage.

Installation notes

Veloop is ad-hoc signed and not notarized. Only remove quarantine from a copy downloaded from this repository:

xattr -dr com.apple.quarantine /Applications/Veloop.app
open /Applications/Veloop.app

Because the code hash changes between ad-hoc signed releases, macOS may require Accessibility to be enabled again after updating.

Download integrity

  • Asset: Veloop-0.3.0-universal.dmg
  • SHA-256: 7a0615660bbcbab629b6e8257af3ba36dbac919185bc804473f452e2fe8f04d0
  • Asset: update.json
  • SHA-256: 91f340fe863bba85e5008a6d085199c3b446a11e5f0c40e6316de25c61a4aa36

Veloop 0.2.3

Choose a tag to compare

@talentdedcat talentdedcat released this 12 Aug 14:46

What changed

  • Fixed caret placement after switching between text fields when an application retained an older input-method context.
  • Kept caret and permission preparation off the global keyboard callback so a failed lookup falls back to normal paste without freezing or swallowing Command-V.
  • Prevented cancelled caret lookups from publishing stale positions into the next paste cycle.
  • Improved Palette upgrades by finding the installed helper by its exact executable path and waiting for the old process to exit before replacement.

Verification

  • swift test: 230 tests passed with 0 failures.
  • The release DMG passed its read-only packaging contract, ad-hoc signature verification, and arm64/x86_64 architecture checks.
  • The Palette Objective-C source passed ARC and module syntax checking.

Installation notes

Veloop is ad-hoc signed and not notarized. After replacing the application, remove quarantine before launch:

xattr -dr com.apple.quarantine /Applications/Veloop.app
open /Applications/Veloop.app

Because the updated binary has a new ad-hoc identity, macOS may require Accessibility to be enabled again.

Download integrity

  • Asset: Veloop-0.2.3-universal.dmg
  • SHA-256: bbee2d3b51c0a1561386f276ec0edb1d3dd93a3e33d2629b247470b33bed3ecf

Veloop 0.2.2

Choose a tag to compare

@talentdedcat talentdedcat released this 12 Aug 09:08

What changed

  • Improved caret placement for empty text controls when direct text geometry is unavailable.
  • Added a bounded Accessibility fallback that targets the current frontmost process, validates collapsed selections against the focused control, and avoids estimating geometry for non-text or non-empty controls.
  • Preserved Palette geometry as the first choice while making fallback failures fast and non-blocking.
  • Updated the public version, Homebrew Cask, bilingual download links, and release contracts for 0.2.2.

Verification

  • swift test: 218 tests passed, 0 failures.
  • The release build completed for both arm64 and x86_64.
  • Strict code-signature verification, read-only DMG contract verification, and hdiutil verify passed.
  • The Homebrew Cask checksum matches the published DMG.

Installation notes

Veloop 0.2.2 remains ad-hoc signed and is not notarized. Because the binary hash changes between releases, macOS may require Accessibility to be enabled once for the updated app.

Download integrity

  • Asset: Veloop-0.2.2-universal.dmg
  • SHA-256: 403ba0b535f36588d68af175b8c00bdefad1be2ef55e202eed9202e3413742bb

Veloop 0.2.1

Choose a tag to compare

@talentdedcat talentdedcat released this 12 Aug 07:09

What changed

  • Fixed caret placement in empty text fields by querying the zero-length Palette range and adding an Accessibility Text Marker fallback before legacy selection bounds.
  • Made Accessibility the single permission gate and refreshed permission state at 100 ms while System Settings is active.
  • Added bounded Agent recovery for permission changes so normal Command-V input remains fail-open instead of stalling.
  • Added permission recovery, empty-caret, and release packaging regression coverage.

Verification

  • swift test: 209 tests passed, 0 failures.
  • Universal release binaries verified for arm64 and x86_64.
  • Strict code-signature verification and read-only DMG verification passed.
  • An empty web text field resolved to a valid 1 x 19 caret rectangle through the Palette path; Accessibility fallback behavior is covered by unit and source-contract tests.

Installation notes

Veloop 0.2.1 remains ad-hoc signed and is not notarized. Because the binary hash changes between releases, macOS may require Accessibility to be enabled once for the updated app.

Download integrity

  • Asset: Veloop-0.2.1-universal.dmg
  • SHA-256: 2d8d7ee76eda3331f5cae98d6234e73324a846e5bd08ebf20bd323d5940b9620

Veloop 0.2.0

Choose a tag to compare

@talentdedcat talentdedcat released this 11 Aug 16:55

What changed

  • Unified the control app and background runtime under the single Veloop permission identity, with Accessibility as the only permission users configure.
  • Refreshed permission state when Veloop becomes active, kept Open Settings available in every state, and stopped triggering proactive macOS permission prompts.
  • Improved caret placement by preferring the bundled Palette and falling back to the focused Accessibility element when needed.
  • Added two direct-to-Trash uninstall policies: preserve history and settings, or remove everything. Homebrew uninstall performs a complete purge.
  • Kept clipboard capture, history, previews, and restoration local to the Mac.

Verification

  • swift test: 198 tests passed with 0 failures.
  • The release build completed for arm64 and x86_64.
  • The DMG verifier confirmed version 0.2.0 (build 5), the single Veloop.app identity, required resources, both architecture slices, and valid ad-hoc code signatures.
  • hdiutil verify confirmed the disk image checksum. The x86_64 slices were verified but were not run on Intel hardware during this publication.

Installation notes

Veloop 0.2.0 is ad-hoc signed and not notarized. After copying Veloop.app to Applications and before the first launch, run:

xattr -dr com.apple.quarantine /Applications/Veloop.app
open /Applications/Veloop.app

An ad-hoc binary update changes its code hash. If macOS does not retain the previous grant, enable Veloop again in System Settings > Privacy & Security > Accessibility.

Download integrity

  • Asset: Veloop-0.2.0-universal.dmg
  • Size: 3,291,091 bytes
  • SHA-256: 6676a7efd675c9cf51654c838bd09fa546ef2a0693a2f5992e74e98a65fc835b

Veloop 0.1.2

Choose a tag to compare

@talentdedcat talentdedcat released this 09 Aug 19:05

What changed

  • Moved permission status ownership fully into the background Agent. Each IPC state request now reads Input Monitoring, event-posting, and Accessibility access live through the public macOS preflight APIs.
  • Registered and started the current embedded Agent before the control app requests permission state, with finite nonblocking IPC retries while the Agent becomes ready.
  • Restarted the launchd-managed Agent after returning from System Settings, then waited for IPC recovery before refreshing permission state.
  • Separated permission preflight from permission requests. Normal launch and activation never prompt; request APIs run only after an explicit click for a permission group that is currently missing.
  • Added distinct Checking, Allowed, Required, and Agent Unavailable states. Agent startup or IPC failure is no longer displayed as missing authorization, and stale permission snapshots are cleared after terminal failures.
  • Required both event-posting access and Accessibility trust for the Accessibility row, preventing partially authorized states from being reported as allowed.
  • Moved Agent registration, restart, preference updates, IPC calls, and retry delays off the main thread. Added cancellation and overlapping-operation protection so older results cannot overwrite newer state.
  • Kept the Agent identity stable at com.veloop.service, with the embedded path Veloop.app/Contents/Library/LoginItems/Veloop.app and the display/executable name Veloop.
  • Fixed the public source tree so the required configuration sources and bundle metadata are included, while local release tooling remains excluded from GitHub.
  • Improved Homebrew uninstall cleanup so the runtime-installed input method and LaunchAgent plist are removed during a normal uninstall.

Verification

  • Added automated coverage for launch ordering, Agent-owned permission state, return-from-settings restart, allowed-state rendering, no unsolicited prompts, bounded retry, explicit unavailable errors, cancellation, and Agent registration behavior.
  • Passed 147 automated tests.
  • Verified App and Agent sources with complete Swift concurrency checking and warnings as errors.
  • Verified the DMG, nested ad-hoc runtime signatures, stable bundle identifiers, and universal arm64 + x86_64 architectures for the App, Agent, Palette, and CLI.

Installation note

Veloop 0.1.2 remains ad-hoc signed and is not notarized. After installation, run:

xattr -dr com.apple.quarantine /Applications/Veloop.app

Because the ad-hoc code identity changes when the executable changes, upgrading may require enabling Veloop again under Input Monitoring and Accessibility.

Download integrity

  • Asset: Veloop-0.1.2-universal.dmg
  • SHA-256: 6ad90b9d6e7055d9d09f0553b2261450b8a7150f4e908564707121cca532eb72

Veloop 0.1.1

Choose a tag to compare

@talentdedcat talentdedcat released this 09 Aug 14:48

Fixes Palette replacement during reinstall and upgrade so already-open text clients can reconnect without restarting. The installer now disables the input source before stopping the Helper, allows a short bounded disconnect grace period, and uses bounded termination with SIGTERM fallback.

Verified with Microsoft Edge, Terminal, and ChatGPT left open across the upgrade. Veloop remains ad-hoc signed and is not notarized; macOS may require permissions to be granted again when the Agent code identity changes.

Veloop 0.1.0

Choose a tag to compare

@talentdedcat talentdedcat released this 09 Aug 10:48

Veloop 0.1.0 is the initial public release of the native macOS clipboard history app.

Highlights

  • Opens local clipboard history beside the active text caret.
  • Preserves rich pasteboard representations, files, images, and custom data when available.
  • Keeps clipboard history and application data on the Mac.
  • Includes Universal arm64 and x86_64 binaries for the App, Agent, Palette, and CLI.

Install

Download Veloop-0.1.0-universal.dmg, open it, and drag Veloop.app to Applications.

This release is ad-hoc signed and not notarized. On first launch, macOS may require approval through System Settings > Privacy & Security > Open Anyway.

SHA-256: 056c226734157d03f19bbac929aed92f908cbbf1b49b48b1ade88427a5f635db