flippy

flippy Used AI

11 devlogs
33h 17m
•  Ship certified
Created by Gangsta Ozcan

Flipper Zero firmware and remote archive management. This copies files from a local git repo EXTREMELY EFFICIENTLY AND FAST to your flipper zero so you can have large DB dumps with ease!

Timeline

Ship 1

1 payout of shell 636.0 shells

Gangsta Ozcan

about 1 month ago

Gangsta Ozcan Covers 11 devlogs and 33h 17m

I added some of the libraries I forked and worked on to make flippy to the associated hackatime projects.

Too tired to find a funny meme so here's a recycled one:

Update attachment

MASSIVE UPDATES. 0.4.1 brings many new features missing from the cli, new logging, better error handling, more progress, etc. Not 0.5.0 since no breaking changes but alas its fine.

This took a while lol.

Update attachment

0.4.0

Did some things!

BREAKING CHANGES

  • Changes dependencies and their feature flags, potentially breaking consuming crates. (Why would you consume a binary? I don't know...)

Fixed

  • Use compile constants for coloring the FLIPPY logo.
  • Git diffing now supplies mapping information to the operation handler
  • Git diffing no longer attempts to remove a / prefix in operation paths since it does not exist.

Added

  • json feature for tracing_subscriber
  • json logging via the --json flag
  • release-hyper overkill performance profile
  • Progress bar for upload operations
  • Improved md5 difference algorithm which caches results for an entire directory. This is actually a common occurrence (reading every file in a directory one by one instead of all at once) since most directories stay the same per commit. May change this if it becomes inefficient, however it is fine for now (me).

Removed

  • owo-colors: I need to figure out a better way to colorize version info without compromising binary size and ease of use.
  • :kekw: from package description
  • logo.txt, please see src/art.rs for the latest art.
  • Very large comments of legacy code. (~1k LOC)

Changed

  • Updated package versions for:
    • unicode-width0.2.1
    • flipper-rpc0.9.3
  • Updated flake.lock
  • Logo, the Y now joins into the P preceding it.
  • First iteration of moving all logging statements with variables into the level!(variable, "...") form instead of level!("...{variable}...") for better JSON logging support.
Update attachment
cskartikey cskartikey about 1 month ago
hello! agh I should have switched to tiptap before launchand fixed tiptap controller

0.3.0 WHAT

Ok so I just did some general cleanup of the codebase, and fully implemented the update command! It put my flipper on a new firmware! I also fixed a bug where it would not use custom firmware at all.

It now pretty-prints the firmware info with fancy colors!

Attached is a relevant image.

Update attachment

I attempted to fix the update tar copying. It kinda worked! Most of the time was spend on flipper-rpc trying to debug HOW and WHY it was not working when I tried to send a the .tgz file to the flipper. But now I get errors: STORAGE_INTERNAL, I think the flipper doesn't support gzip tars, in that case the ENTIRE THING I JUST DID TODAY was ABSOLUTELY USELESS. and i'm VERY MAD :(

Update attachment

Currently working on update mechanism, just implemented the tar extraction wrapper in flipper-rpc, will work on demo video after this.

Current status: Everything is Fine... Or is it?

Update attachment

0.2.3 brings exciting new features (implementations)

Hey it’s beginning to look like you can tell when I’m too tired to use ChatGPT for my devlogs! This man is a fraudster! Or at least it seems so…

I added the update download and parsing functionality, running flippy firmware pull now successfully downloads the latest tgz from your channel and extracts it (What innovation!) TODO: Copy it to the flipper and run the update command.

I also added cool pictures when the cli errors. With that ascii bundle comes the ALL NEW FLIPPY UNOFFICIALLY OFFICIAL CLI LOGO party parrot noises

thank you for not reading this

Wow you read even father! (Typo in case you missed it)
TIL: you can restore old firmwares on a flipper by going to /ext/update/*/update.fuf and clicking run! No download required!

Attached is the windows update cycle for reference on how NOT to do it.

Update attachment

0.2.1!!!

Day 3: Today was ALL about PATHS!!!

Features & Improvements:

  • 🔁 Checksum-based diffing: upload now uses MD5 hashes to determine whether remote files differ from local ones, reducing false positives from size-only checks.
  • 🗂 Directory operations: Implemented creation/removal logic during upload using an abstracted Op enum and improved diff generation.
  • Exclusion support in map: You can now add exclusions using --excludes, which updates the flip.toml mappings appropriately.
  • 💬 CLI polish:

    • Improved help messages and subcommand docs.
    • Introduced --force-walkdir flag to upload (stubbed with unimplemented!()).
    • Logging verbosity can be adjusted with -v, -vv, -vvv.

Internal Changes:

  • 🧹 Refactored diff passes into cleaner prune, create, and update stages.
  • 🔍 Moved join_as_relative into a shared utility.
  • 🎯 Replaced is_file/is_directory helpers with direct checks to improve correctness and reduce misuse.
  • 🛠 Substantially cleaned up main.rs, including error handling, tracing setup, and command dispatch logic.

Fixes:

  • Ensured logs are flushed before exiting on error.
  • Reduced risk of desync in .flippy_do_not_remove sync logic. ``` feat: implement checksum-based remote diffing and clean up CLI
  • Added MD5-based diffing to improve file sync accuracy
  • Added --force-walkdir option to upload (not yet implemented)
  • Added support for --excludes in map command
  • Improved CLI help messages and structured logging
  • Refactored tree diffing logic to support custom diff closures
  • Removed false-positive size-only comparison and deprecated unused helpers
  • Bumped version to 0.2.1 ```
Update attachment

Upload System Overhaul + Mapping Refactor

What Changed

NEW LOGO! It's even patented by OpenAI!

BREAKING CHANGES (literally all of them)

  • Replaced the old Vec system with a clean Mappings struct.

    • Each known mapping type (subghz, nfc, etc.) is now an optional MappingEntry with include/exclude lists.
  • Introduced a SyncFile structure that gets written to Flipper as /ext/.flippy_do_not_remove.

    • This allows subsequent uploads to compute diffs quickly, skipping already-transferred files.
  • upload is now a fully working command that computes a three-way diff, however it does not perform any operations yet, it just logs them

    • Uses gix to diff the local repo state
    • Falls back to a walking_diff (my personal algo) if sync info is missing
    • Applies diff ops conditionally (Copy, CreateDir, Remove) with user confirmation
  • Improved UUID collision handling for repositories

  • Upgraded flipper-rpc to use transport-serial-optimized-large-stack-limit, needed for large ass reads with some dirs

  • Added significant internal diagnostics and tracing messages

  • New flip.toml structure for mappings, I changed this to support a better diff algo.

What Next?

  • Persist remote tree metadata to reduce I/O overhead further
  • Optimize Copy to batch file transfers
  • Allow editing mappings from CLI
day 2: refactor(mapping): switch to typed mapping system, integrate sync file support

- Introduced new typed `Mappings` structure with explicit fields for each mapping type (e.g. subghz, nfc)
- Replaced vector of enum-based mappings with structured `MappingEntry` objects
- Updated `.gitignore` to include `/f0` temporary files
- Upgraded `flipper-rpc` to 0.6.3 with `large-stack-limit` transport feature
- Switched upload flow to rely on a persistent sync file for fast diffing
- Implemented file transfer ops as diff ops: Copy, CreateDir, Remove
- Improved path handling and structured remote directory interactions
- Prevented duplicate repositories by checking both UUID and name
- Added fallback logic for first-time uploads without sync metadata
Update attachment

VERSION 0.1.0 IS OUT! (Forget the 4h whatever, this took 1.5+ months)

Guess what! It doesn't work. Actually a lot of it DOES work, but everything else does NOT.
Every function besides flippy upload is implemented. Also its buggy. DO NOT USE THIS. YOUR FLIPPER ZERO WILL, AND I REPEAT WILL, NOT WORK IF YOU (ie, not me) RUN ANYTHING STUPID (ie, i wouldnt do it).

No docs here. No adventure. Here's it raw!
Check the repo :cheers:

YOU WANT DOCS? flippy help there are your docs you scumbag.

seriously don't run this it may brick everything you own (could you imagine your mom turning into a brick?)

Update attachment

No releases yet! However I have been hard at work on this project for over two MONTHS...
I have been juggling this project with flipper-rpc (the sister project that powers flippy) and development has been mainly for that.

Expect 0.1.0 soon!

Update attachment