Skip to content

Repository files navigation

Fidget Toys

Fidget Toys is a small, free Android app for people who want a fidget spinner that feels good to use, not a game stuffed with ads, rewards, or noise.

Ten years ago, fidget spinner apps crowded the app stores. Now it is strangely hard to find one that is simple, well made, and allowed to be just a spinner. This project is an attempt to make that app: open source, no ads, and careful attention to the details that make a digital object satisfying.

The Fidget spinner running on a Pixel in dark appearance

What is in the app

The spinner responds to direct touch and, if you turn on Motion input, to how you move the phone. Its motion model takes ideas from MIT OpenCourseWare's notes on 3D rigid-body dynamics: signed torque changes angular momentum, bearing friction slows it, and a spring-damped tilt gives the body a little life. It is deliberately an assisted, phone-anchored model rather than a claim that a screen can reproduce a free physical spinner. That makes it feel responsive in the hand without pretending the phone is a real bearing.

The Timer is a compact 2.5D rotary instrument. Wind its live minute scale under the fixed amber index, press the latching play key to start or pause, and use the square reset key to clear it. It has no background alarm or notifications. While the Timer is visible and the app is active, it gives one optional haptic tick per running second. A completed timer repeats a distinct pulse until you acknowledge it or reset it.

Haptics are optional. On Android devices that support amplitude control, spinner detents scale their strength with spin speed. The app also respects the system haptic setting, reduced motion, inactive screens, and the app lifecycle. More detail on the implementation and its limits is in the motion-input notes, haptic notes, and product specification.

The Fidget countdown timer running on a Pixel in dark appearance

Download and install

Every pushed v* tag runs the release workflow and attaches an ARM64 APK to its GitHub Release. Open the repository's Releases, download Fidget-Toys-<version>-arm64-v8a.apk, then open it on an ARM64 Android phone. Android may ask you to allow installs from the browser or file manager that opened the APK. That permission can be turned off again after installation.

The workflow runs formatting, analysis, the cross-platform test suite, and a release build before publishing. Local just check also runs the pixel-exact visual goldens. The workflow creates an installable APK even when release-signing secrets have not been configured. See the release checklist for the signing requirements before distributing outside GitHub releases.

Build from source

The Nix flake pins Flutter, Dart, JDK 17, the Android SDK, and related tools.

nix develop
just check
just release

just release writes build/app/outputs/flutter-apk/app-arm64-v8a-release.apk. Run just to list the rest of the development commands. The project wiki has the design language, release checklist, accessibility review, research notes, and active work queue.

License

Fidget Toys is available under the MIT License.

About

Fidget Toys is a small, free Android app for people who want a fidget spinner that feels good to use, not a game stuffed with ads, rewards, or noise.

Resources

Accessibility

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages