From d82f7c18e8f115506dc3a75c0754d4abbc844032 Mon Sep 17 00:00:00 2001 From: johndoe Date: Wed, 1 Apr 2026 00:18:17 +0800 Subject: [PATCH 01/13] Add Tesla FSD unlock app (GPIO/tesla_fsd) --- applications/GPIO/tesla_fsd/manifest.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 applications/GPIO/tesla_fsd/manifest.yml diff --git a/applications/GPIO/tesla_fsd/manifest.yml b/applications/GPIO/tesla_fsd/manifest.yml new file mode 100644 index 00000000..b24917aa --- /dev/null +++ b/applications/GPIO/tesla_fsd/manifest.yml @@ -0,0 +1,12 @@ +sourcecode: + type: git + location: + origin: https://github.com/hypery11/flipper-tesla-fsd.git + commit_sha: 6ba8581aba60e57b8772b33a7b6aa57ec66a555d + +short_description: Unlock Tesla FSD via CAN bus. Auto-detects HW3/HW4. Requires CAN Add-On. +description: "@README.md" +changelog: "@changelog.md" +screenshots: + - screenshots/main_menu.png + - screenshots/fsd_running.png From d3b6b3c1bf193b06b7561ec90f3b3863c9aa7d0a Mon Sep 17 00:00:00 2001 From: johndoe Date: Thu, 2 Apr 2026 14:21:07 +0800 Subject: [PATCH 02/13] update commit_sha after author rewrite --- applications/GPIO/tesla_fsd/manifest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/GPIO/tesla_fsd/manifest.yml b/applications/GPIO/tesla_fsd/manifest.yml index b24917aa..e3cac6de 100644 --- a/applications/GPIO/tesla_fsd/manifest.yml +++ b/applications/GPIO/tesla_fsd/manifest.yml @@ -2,7 +2,7 @@ sourcecode: type: git location: origin: https://github.com/hypery11/flipper-tesla-fsd.git - commit_sha: 6ba8581aba60e57b8772b33a7b6aa57ec66a555d + commit_sha: 515ab420d1b1c4e7be186b77b0992ae663ee23b5 short_description: Unlock Tesla FSD via CAN bus. Auto-detects HW3/HW4. Requires CAN Add-On. description: "@README.md" From 3937ed1aa493ecb91f4596b9dd7a373df92b4a62 Mon Sep 17 00:00:00 2001 From: johndoe Date: Sat, 4 Apr 2026 17:41:23 +0800 Subject: [PATCH 03/13] update tesla_fsd to v2.0.0 --- applications/GPIO/tesla_fsd/manifest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/GPIO/tesla_fsd/manifest.yml b/applications/GPIO/tesla_fsd/manifest.yml index e3cac6de..c3698687 100644 --- a/applications/GPIO/tesla_fsd/manifest.yml +++ b/applications/GPIO/tesla_fsd/manifest.yml @@ -2,7 +2,7 @@ sourcecode: type: git location: origin: https://github.com/hypery11/flipper-tesla-fsd.git - commit_sha: 515ab420d1b1c4e7be186b77b0992ae663ee23b5 + commit_sha: b09393804f291a6f86e337ddab28eaa5c0983e51 short_description: Unlock Tesla FSD via CAN bus. Auto-detects HW3/HW4. Requires CAN Add-On. description: "@README.md" From bec8198d740fea5419c8a929e80400317d78ad8a Mon Sep 17 00:00:00 2001 From: johndoe Date: Sun, 5 Apr 2026 14:57:11 +0800 Subject: [PATCH 04/13] update tesla_fsd to v2.1.0 --- applications/GPIO/tesla_fsd/manifest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/GPIO/tesla_fsd/manifest.yml b/applications/GPIO/tesla_fsd/manifest.yml index c3698687..5a6004b4 100644 --- a/applications/GPIO/tesla_fsd/manifest.yml +++ b/applications/GPIO/tesla_fsd/manifest.yml @@ -2,7 +2,7 @@ sourcecode: type: git location: origin: https://github.com/hypery11/flipper-tesla-fsd.git - commit_sha: b09393804f291a6f86e337ddab28eaa5c0983e51 + commit_sha: 2e698b7263e1700ca06ceabc27eb2e3f90d261d1 short_description: Unlock Tesla FSD via CAN bus. Auto-detects HW3/HW4. Requires CAN Add-On. description: "@README.md" From 6415b1b2b43bc90287f485167bf104005d561368 Mon Sep 17 00:00:00 2001 From: johndoe Date: Tue, 7 Apr 2026 22:23:08 +0800 Subject: [PATCH 05/13] update tesla_fsd to v2.2.0 --- applications/GPIO/tesla_fsd/manifest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/GPIO/tesla_fsd/manifest.yml b/applications/GPIO/tesla_fsd/manifest.yml index 5a6004b4..aa1c2187 100644 --- a/applications/GPIO/tesla_fsd/manifest.yml +++ b/applications/GPIO/tesla_fsd/manifest.yml @@ -2,7 +2,7 @@ sourcecode: type: git location: origin: https://github.com/hypery11/flipper-tesla-fsd.git - commit_sha: 2e698b7263e1700ca06ceabc27eb2e3f90d261d1 + commit_sha: 09ad9a56685a0b925c2760d2de5bc8251d07e2a5 short_description: Unlock Tesla FSD via CAN bus. Auto-detects HW3/HW4. Requires CAN Add-On. description: "@README.md" From 39fdb965909655eac8278e7b7ffd00168c62655c Mon Sep 17 00:00:00 2001 From: johndoe Date: Wed, 8 Apr 2026 00:08:34 +0800 Subject: [PATCH 06/13] update tesla_fsd to v2.3.0 --- applications/GPIO/tesla_fsd/manifest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/GPIO/tesla_fsd/manifest.yml b/applications/GPIO/tesla_fsd/manifest.yml index aa1c2187..d778093d 100644 --- a/applications/GPIO/tesla_fsd/manifest.yml +++ b/applications/GPIO/tesla_fsd/manifest.yml @@ -2,7 +2,7 @@ sourcecode: type: git location: origin: https://github.com/hypery11/flipper-tesla-fsd.git - commit_sha: 09ad9a56685a0b925c2760d2de5bc8251d07e2a5 + commit_sha: 40e090562ce7c3677cea66329c023bf5327d6109 short_description: Unlock Tesla FSD via CAN bus. Auto-detects HW3/HW4. Requires CAN Add-On. description: "@README.md" From 70417301fa26f8946124acfe3a60d48bd101a635 Mon Sep 17 00:00:00 2001 From: hypery11 Date: Thu, 9 Apr 2026 01:08:24 +0800 Subject: [PATCH 07/13] update tesla_fsd to v2.4.0 --- applications/GPIO/tesla_fsd/manifest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/GPIO/tesla_fsd/manifest.yml b/applications/GPIO/tesla_fsd/manifest.yml index d778093d..ee7668a0 100644 --- a/applications/GPIO/tesla_fsd/manifest.yml +++ b/applications/GPIO/tesla_fsd/manifest.yml @@ -2,7 +2,7 @@ sourcecode: type: git location: origin: https://github.com/hypery11/flipper-tesla-fsd.git - commit_sha: 40e090562ce7c3677cea66329c023bf5327d6109 + commit_sha: a4ea7f10d5cd0208b434442a0a3b036860228976 short_description: Unlock Tesla FSD via CAN bus. Auto-detects HW3/HW4. Requires CAN Add-On. description: "@README.md" From 633d9bf7a2afcfb3228e75a72fad6debe6d0bb26 Mon Sep 17 00:00:00 2001 From: hypery11 Date: Fri, 10 Apr 2026 01:09:51 +0800 Subject: [PATCH 08/13] =?UTF-8?q?update=20tesla=5Fmod=20to=20v2.5.0=20?= =?UTF-8?q?=E2=80=94=20rebrand=20+=20extras=20scene?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- applications/GPIO/tesla_fsd/manifest.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/applications/GPIO/tesla_fsd/manifest.yml b/applications/GPIO/tesla_fsd/manifest.yml index ee7668a0..36c0a035 100644 --- a/applications/GPIO/tesla_fsd/manifest.yml +++ b/applications/GPIO/tesla_fsd/manifest.yml @@ -2,9 +2,9 @@ sourcecode: type: git location: origin: https://github.com/hypery11/flipper-tesla-fsd.git - commit_sha: a4ea7f10d5cd0208b434442a0a3b036860228976 + commit_sha: e53d88f889820348c9813b91bc4f21eac9349eca -short_description: Unlock Tesla FSD via CAN bus. Auto-detects HW3/HW4. Requires CAN Add-On. +short_description: Tesla CAN bus toolkit — FSD region-gate bypass, nag killer, BMS dashboard, extras. Requires CAN Add-On. description: "@README.md" changelog: "@changelog.md" screenshots: From 6c80315fbfcdac94422f3c70090606c2e5d48601 Mon Sep 17 00:00:00 2001 From: hypery11 Date: Fri, 10 Apr 2026 19:32:57 +0800 Subject: [PATCH 09/13] =?UTF-8?q?update=20tesla=5Fmod=20to=20v2.6.0=20?= =?UTF-8?q?=E2=80=94=2032=20CAN=20handlers,=20full=20Party=20CAN=20coverag?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- applications/GPIO/tesla_fsd/manifest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/GPIO/tesla_fsd/manifest.yml b/applications/GPIO/tesla_fsd/manifest.yml index 36c0a035..6b532fb9 100644 --- a/applications/GPIO/tesla_fsd/manifest.yml +++ b/applications/GPIO/tesla_fsd/manifest.yml @@ -2,7 +2,7 @@ sourcecode: type: git location: origin: https://github.com/hypery11/flipper-tesla-fsd.git - commit_sha: e53d88f889820348c9813b91bc4f21eac9349eca + commit_sha: e9229bb7bf41f9ea4b8e35d467ece9971c1bc01b short_description: Tesla CAN bus toolkit — FSD region-gate bypass, nag killer, BMS dashboard, extras. Requires CAN Add-On. description: "@README.md" From 4589609dd1c95bb5cee66850c2ee21144c656f18 Mon Sep 17 00:00:00 2001 From: hypery11 Date: Sun, 12 Apr 2026 21:33:16 +0800 Subject: [PATCH 10/13] =?UTF-8?q?update=20tesla=5Fmod=20to=20v2.7.0=20?= =?UTF-8?q?=E2=80=94=20upstream=20parity,=20Momentum=20fix,=2037=20handler?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- applications/GPIO/tesla_fsd/manifest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/GPIO/tesla_fsd/manifest.yml b/applications/GPIO/tesla_fsd/manifest.yml index 6b532fb9..4724b7e6 100644 --- a/applications/GPIO/tesla_fsd/manifest.yml +++ b/applications/GPIO/tesla_fsd/manifest.yml @@ -2,7 +2,7 @@ sourcecode: type: git location: origin: https://github.com/hypery11/flipper-tesla-fsd.git - commit_sha: e9229bb7bf41f9ea4b8e35d467ece9971c1bc01b + commit_sha: 668f7cd39369f0602a5c88c69e081c0afab37401 short_description: Tesla CAN bus toolkit — FSD region-gate bypass, nag killer, BMS dashboard, extras. Requires CAN Add-On. description: "@README.md" From 0a68870d27265c224bcf8971eab266e51f4e94c5 Mon Sep 17 00:00:00 2001 From: hypery11 Date: Wed, 15 Apr 2026 21:24:40 +0800 Subject: [PATCH 11/13] =?UTF-8?q?update=20tesla=5Fmod=20to=20v2.8.0=20?= =?UTF-8?q?=E2=80=94=20DAS-aware=20nag=20killer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- applications/GPIO/tesla_fsd/manifest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/GPIO/tesla_fsd/manifest.yml b/applications/GPIO/tesla_fsd/manifest.yml index 4724b7e6..a1669480 100644 --- a/applications/GPIO/tesla_fsd/manifest.yml +++ b/applications/GPIO/tesla_fsd/manifest.yml @@ -2,7 +2,7 @@ sourcecode: type: git location: origin: https://github.com/hypery11/flipper-tesla-fsd.git - commit_sha: 668f7cd39369f0602a5c88c69e081c0afab37401 + commit_sha: a08457569a7e0e6ed060157d02b475ecc0aad01c short_description: Tesla CAN bus toolkit — FSD region-gate bypass, nag killer, BMS dashboard, extras. Requires CAN Add-On. description: "@README.md" From 686fd109489881aad6f8f09d4830ce9d53941796 Mon Sep 17 00:00:00 2001 From: hypery11 Date: Thu, 16 Apr 2026 15:20:00 +0800 Subject: [PATCH 12/13] move manifest to GPIO/tesla_mod to match new appid --- .github/.ARCHIVARIUS_URL | 1 - .github/PULL_REQUEST_TEMPLATE.md | 22 - .github/WIDGET_TEMPLATE.md | 1 - .github/actions/bundle/action.yml | 106 ---- .github/problem-matcher.json | 25 - .github/workflows/build.yml | 65 --- .github/workflows/bundle.yml | 268 --------- .github/workflows/widget.yml | 47 -- .gitignore | 6 - ReadMe.md | 25 - applications/Bluetooth/.gitkeep | 0 .../Bluetooth/anki_remote/manifest.yml | 13 - applications/Bluetooth/bt_trigger/README.md | 3 - .../Bluetooth/bt_trigger/manifest.yml | 12 - applications/Bluetooth/bthome/README.md | 5 - applications/Bluetooth/bthome/manifest.yml | 13 - applications/Bluetooth/findmy/README.md | 3 - applications/Bluetooth/findmy/manifest.yml | 13 - applications/Bluetooth/hid_ble/README.md | 19 - applications/Bluetooth/hid_ble/manifest.yml | 24 - .../magicband_plus_lights/manifest.yml | 10 - applications/Bluetooth/pc_monitor/README.md | 3 - .../Bluetooth/pc_monitor/manifest.yml | 12 - applications/GPIO/.gitkeep | 0 applications/GPIO/24cxxprog/manifest.yml | 23 - applications/GPIO/401_digilab/manifest.yml | 28 - applications/GPIO/401_light_msg/README.md | 3 - applications/GPIO/401_light_msg/manifest.yml | 16 - applications/GPIO/air_mouse/README.md | 3 - applications/GPIO/air_mouse/manifest.yml | 13 - applications/GPIO/airmon/README.md | 3 - applications/GPIO/airmon/manifest.yml | 12 - applications/GPIO/avr_isp/README.md | 3 - applications/GPIO/avr_isp/manifest.yml | 16 - .../GPIO/bme680_flipper_zero/manifest.yml | 25 - applications/GPIO/camera_suite/README.md | 3 - applications/GPIO/camera_suite/manifest.yml | 22 - applications/GPIO/canfdhs/README.md | 97 ---- applications/GPIO/canfdhs/manifest.yml | 21 - applications/GPIO/co2_logger/manifest.yml | 10 - applications/GPIO/dap_link/README.md | 3 - applications/GPIO/dap_link/manifest.yml | 13 - .../GPIO/esp32_wifi_marauder/README.md | 3 - .../GPIO/esp32_wifi_marauder/manifest.yml | 14 - applications/GPIO/esp_flasher/README.md | 3 - applications/GPIO/esp_flasher/manifest.yml | 11 - .../GPIO/eth_troubleshooter/README.md | 3 - .../GPIO/eth_troubleshooter/manifest.yml | 14 - applications/GPIO/fcom/README.md | 3 - applications/GPIO/fcom/manifest.yml | 14 - applications/GPIO/fencing_testbox/README.md | 3 - .../GPIO/fencing_testbox/manifest.yml | 18 - applications/GPIO/flashlight/README.md | 3 - applications/GPIO/flashlight/manifest.yml | 11 - applications/GPIO/flip_downloader/README.md | 3 - .../GPIO/flip_downloader/manifest.yml | 21 - applications/GPIO/flip_gemini/manifest.yml | 18 - applications/GPIO/flip_library/README.md | 3 - applications/GPIO/flip_library/manifest.yml | 19 - applications/GPIO/flip_map/manifest.yml | 19 - applications/GPIO/flip_rpi/README.md | 3 - applications/GPIO/flip_rpi/manifest.yml | 18 - applications/GPIO/flip_social/README.md | 3 - applications/GPIO/flip_social/manifest.yml | 21 - applications/GPIO/flip_telegram/manifest.yml | 20 - applications/GPIO/flip_trader/README.md | 3 - applications/GPIO/flip_trader/manifest.yml | 20 - applications/GPIO/flip_weather/README.md | 3 - applications/GPIO/flip_weather/manifest.yml | 18 - applications/GPIO/flip_wifi/README.md | 3 - applications/GPIO/flip_wifi/manifest.yml | 18 - applications/GPIO/flip_world/README.md | 3 - applications/GPIO/flip_world/manifest.yml | 23 - applications/GPIO/flipagotchi/README.md | 3 - applications/GPIO/flipagotchi/manifest.yml | 12 - applications/GPIO/flipboard_blinky/README.md | 3 - .../GPIO/flipboard_blinky/manifest.yml | 17 - .../GPIO/flipboard_keyboard/README.md | 3 - .../GPIO/flipboard_keyboard/manifest.yml | 16 - applications/GPIO/flipboard_signal/README.md | 3 - .../GPIO/flipboard_signal/manifest.yml | 15 - applications/GPIO/flipboard_simon/README.md | 3 - .../GPIO/flipboard_simon/manifest.yml | 16 - .../GPIO/flipper_gb_printer/README.md | 3 - .../GPIO/flipper_gb_printer/manifest.yml | 12 - applications/GPIO/flipper_geiger/README.md | 3 - applications/GPIO/flipper_geiger/manifest.yml | 13 - applications/GPIO/flipper_http/manifest.yml | 18 - .../GPIO/flipper_spi_terminal/README.md | 3 - .../GPIO/flipper_spi_terminal/manifest.yml | 15 - applications/GPIO/flipperscope/README.md | 3 - applications/GPIO/flipperscope/manifest.yml | 13 - applications/GPIO/fn_test/README.md | 3 - applications/GPIO/fn_test/manifest.yml | 14 - applications/GPIO/free_roam/manifest.yml | 20 - applications/GPIO/gemini_ia/README.md | 3 - applications/GPIO/gemini_ia/manifest.yml | 14 - applications/GPIO/ghost_esp/manifest.yml | 19 - .../GPIO/gpio_7segment_output/README.md | 3 - .../GPIO/gpio_7segment_output/manifest.yml | 12 - applications/GPIO/gpio_controller/README.md | 3 - .../GPIO/gpio_controller/manifest.yml | 10 - applications/GPIO/gpio_explorer_app/README.md | 3 - .../GPIO/gpio_explorer_app/manifest.yml | 14 - applications/GPIO/gpio_reader/README.md | 3 - applications/GPIO/gpio_reader/manifest.yml | 12 - applications/GPIO/gpio_sentry_safe/README.md | 3 - .../GPIO/gpio_sentry_safe/manifest.yml | 13 - applications/GPIO/gps_nmea/README.md | 3 - applications/GPIO/gps_nmea/manifest.yml | 13 - applications/GPIO/i2ctools/README.md | 3 - applications/GPIO/i2ctools/manifest.yml | 17 - applications/GPIO/ina_meter/README.md | 3 - applications/GPIO/ina_meter/manifest.yml | 12 - .../GPIO/ld2410_human_detector/README.md | 3 - .../GPIO/ld2410_human_detector/manifest.yml | 16 - applications/GPIO/lightmeter/README.md | 3 - applications/GPIO/lightmeter/manifest.yml | 13 - applications/GPIO/logic_analyzer/README.md | 3 - applications/GPIO/logic_analyzer/manifest.yml | 10 - applications/GPIO/longwave_clock/README.md | 3 - applications/GPIO/longwave_clock/manifest.yml | 15 - applications/GPIO/magspoof/README.md | 3 - applications/GPIO/magspoof/manifest.yml | 14 - .../GPIO/malveke_gb_cartridge/README.md | 3 - .../GPIO/malveke_gb_cartridge/manifest.yml | 19 - .../GPIO/malveke_gb_link_camera/README.md | 3 - .../GPIO/malveke_gb_link_camera/manifest.yml | 17 - .../GPIO/malveke_gb_live_camera/README.md | 3 - .../GPIO/malveke_gb_live_camera/manifest.yml | 18 - applications/GPIO/malveke_gb_photo/README.md | 3 - .../GPIO/malveke_gb_photo/manifest.yml | 19 - .../GPIO/malveke_gba_cartridge/README.md | 3 - .../GPIO/malveke_gba_cartridge/manifest.yml | 18 - applications/GPIO/max31855/README.md | 3 - applications/GPIO/max31855/manifest.yml | 13 - applications/GPIO/mh_z19/README.md | 3 - applications/GPIO/mh_z19/manifest.yml | 15 - applications/GPIO/mhz19_uart/README.md | 3 - applications/GPIO/mhz19_uart/manifest.yml | 11 - .../GPIO/moisture_sensor/manifest.yml | 19 - applications/GPIO/nearby_files/manifest.yml | 18 - .../GPIO/noptel_lrf_sampler/README.md | 3 - .../GPIO/noptel_lrf_sampler/manifest.yml | 19 - .../GPIO/nrf24channelscanner/README.md | 3 - .../GPIO/nrf24channelscanner/manifest.yml | 17 - applications/GPIO/pokemon/README.md | 3 - applications/GPIO/pokemon/manifest.yml | 14 - applications/GPIO/radar_scanner/README.md | 3 - applications/GPIO/radar_scanner/manifest.yml | 39 -- applications/GPIO/radsens/README.md | 3 - applications/GPIO/radsens/manifest.yml | 12 - applications/GPIO/sd_spi_app/README.md | 3 - applications/GPIO/sd_spi_app/manifest.yml | 15 - applications/GPIO/servotester/README.md | 1 - applications/GPIO/servotester/manifest.yml | 12 - applications/GPIO/servotesterapp/README.md | 1 - applications/GPIO/servotesterapp/manifest.yml | 10 - applications/GPIO/signal_generator/README.md | 3 - .../GPIO/signal_generator/manifest.yml | 13 - .../GPIO/simultaneous_rfid_reader/README.md | 3 - .../simultaneous_rfid_reader/manifest.yml | 28 - applications/GPIO/sio2flip/README.md | 3 - applications/GPIO/sio2flip/manifest.yml | 12 - applications/GPIO/spi_mem_manager/README.md | 3 - .../GPIO/spi_mem_manager/manifest.yml | 14 - applications/GPIO/stepcounter/README.md | 1 - applications/GPIO/stepcounter/manifest.yml | 14 - applications/GPIO/swd_probe/README.md | 3 - applications/GPIO/swd_probe/manifest.yml | 11 - .../{tesla_fsd => tesla_mod}/manifest.yml | 0 applications/GPIO/uart_terminal/README.md | 3 - applications/GPIO/uart_terminal/manifest.yml | 13 - applications/GPIO/ublox/README.md | 3 - applications/GPIO/ublox/manifest.yml | 12 - applications/GPIO/uhf_rfid/README.md | 3 - applications/GPIO/uhf_rfid/manifest.yml | 14 - applications/GPIO/unitemp/README.md | 3 - applications/GPIO/unitemp/manifest.yml | 19 - applications/GPIO/usping/README.md | 3 - applications/GPIO/usping/manifest.yml | 12 - .../GPIO/uv_meter_as7331/manifest.yml | 12 - .../GPIO/veml7700luxmeter/manifest.yml | 22 - applications/GPIO/vgm_air_mouse/README.md | 3 - applications/GPIO/vgm_air_mouse/manifest.yml | 12 - applications/GPIO/vgm_game_remote/README.md | 3 - .../GPIO/vgm_game_remote/manifest.yml | 18 - applications/GPIO/web_crawler/README.md | 3 - applications/GPIO/web_crawler/manifest.yml | 19 - applications/GPIO/wiegand_reader/README.md | 3 - applications/GPIO/wiegand_reader/manifest.yml | 19 - applications/GPIO/wire_tester/README.md | 3 - applications/GPIO/wire_tester/manifest.yml | 11 - .../GPIO/ws2812b_tester_app/README.md | 3 - .../GPIO/ws2812b_tester_app/manifest.yml | 13 - applications/GPIO/zeitraffer/README.md | 27 - applications/GPIO/zeitraffer/manifest.yml | 14 - applications/Games/.gitkeep | 0 applications/Games/4inrow/README.md | 3 - applications/Games/4inrow/manifest.yml | 13 - applications/Games/air_arkanoid/README.md | 3 - applications/Games/air_arkanoid/manifest.yml | 13 - applications/Games/air_labyrinth/README.md | 16 - applications/Games/air_labyrinth/manifest.yml | 12 - applications/Games/apple_grabber/README.md | 3 - applications/Games/apple_grabber/manifest.yml | 11 - applications/Games/arddrivin/manifest.yml | 14 - applications/Games/ardugolf/manifest.yml | 17 - applications/Games/arduventure/manifest.yml | 18 - applications/Games/arkanoid/README.md | 3 - applications/Games/arkanoid/manifest.yml | 12 - applications/Games/asteroids/README.md | 3 - applications/Games/asteroids/manifest.yml | 12 - applications/Games/banana/README.md | 3 - applications/Games/banana/manifest.yml | 13 - applications/Games/bomberduck/README.md | 3 - applications/Games/bomberduck/manifest.yml | 12 - applications/Games/bzzbzz/manifest.yml | 20 - applications/Games/catacombs/manifest.yml | 16 - applications/Games/chess/README.md | 3 - applications/Games/chess/manifest.yml | 16 - applications/Games/citybloxx/README.md | 3 - applications/Games/citybloxx/manifest.yml | 11 - applications/Games/color_guess/README.md | 3 - applications/Games/color_guess/manifest.yml | 12 - applications/Games/countdown/README.md | 3 - applications/Games/countdown/manifest.yml | 18 - applications/Games/deadzone/README.md | 3 - applications/Games/deadzone/manifest.yml | 15 - applications/Games/dice_app/README.md | 3 - applications/Games/dice_app/manifest.yml | 12 - .../Games/digital_kaleidoscope/README.md | 21 - .../Games/digital_kaleidoscope/manifest.yml | 21 - applications/Games/doom/README.md | 3 - applications/Games/doom/manifest.yml | 13 - applications/Games/drifter/README.md | 3 - applications/Games/drifter/manifest.yml | 13 - applications/Games/eightball/README.md | 16 - applications/Games/eightball/manifest.yml | 12 - applications/Games/fighterjet/README.md | 3 - applications/Games/fighterjet/manifest.yml | 10 - applications/Games/flappy_bird/README.md | 3 - applications/Games/flappy_bird/manifest.yml | 12 - applications/Games/flight_assault/README.md | 3 - .../Games/flight_assault/manifest.yml | 12 - applications/Games/flipper_hero/README.md | 3 - applications/Games/flipper_hero/manifest.yml | 13 - applications/Games/flipper_pong/README.md | 3 - applications/Games/flipper_pong/manifest.yml | 11 - applications/Games/flipperpose/README.md | 3 - applications/Games/flipperpose/manifest.yml | 15 - applications/Games/flipperzero_fnaf/README.md | 3 - .../Games/flipperzero_fnaf/manifest.yml | 13 - applications/Games/flippy_road/README.md | 3 - applications/Games/flippy_road/manifest.yml | 11 - applications/Games/fortune_cookie/README.md | 3 - .../Games/fortune_cookie/manifest.yml | 12 - applications/Games/furious_birds/README.md | 3 - applications/Games/furious_birds/manifest.yml | 12 - applications/Games/game15/README.md | 3 - applications/Games/game15/manifest.yml | 11 - applications/Games/game_2048/README.md | 3 - applications/Games/game_2048/manifest.yml | 12 - .../Games/game_connect_wires/README.md | 3 - .../Games/game_connect_wires/manifest.yml | 14 - .../Games/game_hanoi_towers/README.md | 3 - .../Games/game_hanoi_towers/manifest.yml | 14 - applications/Games/game_vexed/README.md | 3 - applications/Games/game_vexed/manifest.yml | 13 - applications/Games/gameoflife/README.md | 3 - applications/Games/gameoflife/manifest.yml | 11 - applications/Games/hangman/README.md | 3 - applications/Games/hangman/manifest.yml | 13 - applications/Games/heap_defence/README.md | 3 - applications/Games/heap_defence/manifest.yml | 12 - applications/Games/jetpack_game/README.md | 3 - applications/Games/jetpack_game/manifest.yml | 11 - applications/Games/kcline/README.md | 3 - applications/Games/kcline/manifest.yml | 14 - applications/Games/laser_tag/README.md | 3 - applications/Games/laser_tag/manifest.yml | 20 - applications/Games/lifecounter/README.md | 3 - applications/Games/lifecounter/manifest.yml | 12 - applications/Games/mandelbrotset/README.md | 3 - applications/Games/mandelbrotset/manifest.yml | 12 - applications/Games/matagotchi/README.md | 3 - applications/Games/matagotchi/manifest.yml | 11 - .../Games/minesweeper_redux/README.md | 3 - .../Games/minesweeper_redux/manifest.yml | 14 - applications/Games/montyhall/README.md | 3 - applications/Games/montyhall/manifest.yml | 13 - applications/Games/myblab/manifest.yml | 16 - applications/Games/nupogodi/README.md | 3 - applications/Games/nupogodi/manifest.yml | 13 - applications/Games/paint/README.md | 3 - applications/Games/paint/manifest.yml | 11 - applications/Games/pinball0/README.md | 3 - applications/Games/pinball0/manifest.yml | 14 - .../Games/princeofarabia/manifest.yml | 16 - applications/Games/quadrastic/README.md | 3 - applications/Games/quadrastic/manifest.yml | 14 - applications/Games/questions/README.md | 3 - applications/Games/questions/manifest.yml | 11 - applications/Games/race_game/manifest.yml | 12 - applications/Games/racegame/README.md | 3 - applications/Games/racegame/manifest.yml | 12 - applications/Games/racso_sokoban/README.md | 3 - applications/Games/racso_sokoban/manifest.yml | 16 - .../racso_ultimate_tic_tac_toe/README.md | 3 - .../racso_ultimate_tic_tac_toe/manifest.yml | 15 - applications/Games/racso_zero/README.md | 3 - applications/Games/racso_zero/manifest.yml | 13 - applications/Games/reaction/README.md | 3 - applications/Games/reaction/manifest.yml | 11 - applications/Games/reversi/README.md | 3 - applications/Games/reversi/manifest.yml | 13 - .../Games/rock_paper_scissors/README.md | 3 - .../Games/rock_paper_scissors/manifest.yml | 20 - applications/Games/roots_of_life/README.md | 3 - applications/Games/roots_of_life/manifest.yml | 13 - .../Games/rubiks_cube_scrambler/README.md | 3 - .../Games/rubiks_cube_scrambler/manifest.yml | 12 - applications/Games/scorched_tanks/README.md | 3 - .../Games/scorched_tanks/manifest.yml | 12 - applications/Games/secret_toggle/README.md | 3 - applications/Games/secret_toggle/manifest.yml | 10 - applications/Games/slotmachine/README.md | 3 - applications/Games/slotmachine/manifest.yml | 12 - applications/Games/snake20/README.md | 3 - applications/Games/snake20/manifest.yml | 13 - .../Games/spaceimpactii985e/README.md | 3 - .../Games/spaceimpactii985e/manifest.yml | 11 - applications/Games/sudoku/README.md | 3 - applications/Games/sudoku/manifest.yml | 11 - applications/Games/swimmy_fish/manifest.yml | 14 - applications/Games/t_rex_runner/README.md | 3 - applications/Games/t_rex_runner/manifest.yml | 12 - applications/Games/tarot/README.md | 3 - applications/Games/tarot/manifest.yml | 12 - applications/Games/tetris/README.md | 3 - applications/Games/tetris/manifest.yml | 13 - applications/Games/tictactoe/README.md | 3 - applications/Games/tictactoe/manifest.yml | 11 - applications/Games/umpire_indicator/README.md | 3 - .../Games/umpire_indicator/manifest.yml | 18 - applications/Games/videopoker/README.md | 3 - applications/Games/videopoker/manifest.yml | 13 - applications/Games/wave/manifest.yml | 14 - applications/Games/wolfenduino/manifest.yml | 16 - .../Games/xyz_vh8t_slots/manifest.yml | 12 - applications/Games/yatzee/README.md | 3 - applications/Games/yatzee/manifest.yml | 12 - applications/Games/zombiez/README.md | 3 - applications/Games/zombiez/manifest.yml | 12 - applications/Infrared/.gitkeep | 0 applications/Infrared/flame_rng/manifest.yml | 12 - .../Infrared/flipper_xremote/README.md | 3 - .../Infrared/flipper_xremote/manifest.yml | 16 - .../Infrared/hitachi_ac_remote/README.md | 3 - .../Infrared/hitachi_ac_remote/manifest.yml | 12 - applications/Infrared/htw_ac_remote/README.md | 3 - .../Infrared/htw_ac_remote/manifest.yml | 12 - .../Infrared/ir_intervalometer/README.md | 3 - .../Infrared/ir_intervalometer/manifest.yml | 12 - applications/Infrared/ir_scope/README.md | 3 - applications/Infrared/ir_scope/manifest.yml | 11 - .../Infrared/lidar_emulator/README.md | 3 - .../Infrared/lidar_emulator/manifest.yml | 12 - .../Infrared/midea_ac_remote/README.md | 3 - .../Infrared/midea_ac_remote/manifest.yml | 11 - .../Infrared/mitsubishi_ac_remote/README.md | 3 - .../mitsubishi_ac_remote/manifest.yml | 10 - .../Infrared/pause_timer/manifest.yml | 14 - .../Infrared/tamagometer_companion/README.md | 3 - .../tamagometer_companion/manifest.yml | 16 - applications/Infrared/timed_remote/README.md | 3 - .../Infrared/timed_remote/manifest.yml | 20 - .../Infrared/xbox_controller/README.md | 3 - .../Infrared/xbox_controller/manifest.yml | 12 - applications/Infrared/xremote/README.md | 3 - applications/Infrared/xremote/manifest.yml | 15 - applications/Media/.gitkeep | 0 applications/Media/atm/manifest.yml | 12 - applications/Media/bpm_tapper/README.md | 3 - applications/Media/bpm_tapper/manifest.yml | 11 - applications/Media/dvd_screensaver/README.md | 3 - .../Media/dvd_screensaver/manifest.yml | 9 - .../Media/executor_keychain/README.md | 3 - .../Media/executor_keychain/manifest.yml | 18 - applications/Media/flizzer_tracker/README.md | 3 - .../Media/flizzer_tracker/manifest.yml | 10 - applications/Media/fzspground/manifest.yml | 13 - applications/Media/image_viewer/README.md | 3 - applications/Media/image_viewer/manifest.yml | 10 - applications/Media/metronome/README.md | 3 - applications/Media/metronome/manifest.yml | 12 - applications/Media/morse_code/README.md | 3 - applications/Media/morse_code/manifest.yml | 11 - applications/Media/morse_master/manifest.yml | 15 - applications/Media/music_player/README.md | 3 - applications/Media/music_player/manifest.yml | 12 - applications/Media/ocarina/README.md | 3 - applications/Media/ocarina/manifest.yml | 11 - applications/Media/text2sam/README.md | 3 - applications/Media/text2sam/manifest.yml | 11 - applications/Media/tuning_fork/README.md | 3 - applications/Media/tuning_fork/manifest.yml | 19 - applications/Media/usb_midi/README.md | 3 - applications/Media/usb_midi/manifest.yml | 10 - applications/Media/video_player/README.md | 3 - applications/Media/video_player/manifest.yml | 10 - applications/Media/wav_player/README.md | 3 - applications/Media/wav_player/manifest.yml | 13 - applications/Media/zero_tracker/README.md | 3 - applications/Media/zero_tracker/manifest.yml | 12 - applications/NFC/.gitkeep | 0 applications/NFC/cyborg_detector/README.md | 3 - applications/NFC/cyborg_detector/manifest.yml | 17 - applications/NFC/metroflip/README.md | 3 - applications/NFC/metroflip/manifest.yml | 30 - applications/NFC/mfc_editor/README.md | 3 - applications/NFC/mfc_editor/manifest.yml | 15 - applications/NFC/mfkey/README.md | 3 - applications/NFC/mfkey/manifest.yml | 12 - applications/NFC/miband_nfc/README.md | 32 - applications/NFC/miband_nfc/manifest.yml | 22 - applications/NFC/mifare_fuzzer/README.md | 3 - applications/NFC/mifare_fuzzer/manifest.yml | 12 - .../NFC/networking_nfc_qr_app/manifest.yml | 20 - applications/NFC/nfc_apdu_runner/README.md | 3 - applications/NFC/nfc_apdu_runner/manifest.yml | 12 - applications/NFC/nfc_eink/README.md | 3 - applications/NFC/nfc_eink/manifest.yml | 10 - applications/NFC/nfc_login/manifest.yml | 25 - applications/NFC/nfc_magic/README.md | 3 - applications/NFC/nfc_magic/manifest.yml | 13 - applications/NFC/nfc_maker/README.md | 3 - applications/NFC/nfc_maker/manifest.yml | 15 - applications/NFC/nfcurl/README.md | 3 - applications/NFC/nfcurl/manifest.yml | 11 - applications/NFC/passy/README.md | 3 - applications/NFC/passy/manifest.yml | 12 - applications/NFC/picopass/README.md | 3 - applications/NFC/picopass/manifest.yml | 12 - applications/NFC/seader/README.md | 3 - applications/NFC/seader/manifest.yml | 15 - applications/NFC/seos/README.md | 3 - applications/NFC/seos/manifest.yml | 11 - applications/NFC/udecard/manifest.yml | 13 - applications/NFC/vb_migrate/README.md | 3 - applications/NFC/vb_migrate/manifest.yml | 14 - applications/NFC/vk_thermo/manifest.yml | 22 - applications/NFC/weebo/manifest.yml | 12 - applications/RFID/.gitkeep | 0 applications/RFID/fdxb_maker/manifest.yml | 12 - applications/RFID/fuzzer_rfid/README.md | 3 - applications/RFID/fuzzer_rfid/manifest.yml | 13 - applications/RFID/key_generator/README.md | 5 - applications/RFID/key_generator/manifest.yml | 11 - applications/RFID/t5577_multiwriter/README.md | 3 - .../RFID/t5577_multiwriter/manifest.yml | 11 - applications/RFID/t5577_writer/README.md | 3 - applications/RFID/t5577_writer/manifest.yml | 15 - applications/Sub-GHz/.gitkeep | 0 applications/Sub-GHz/esubghz_chat/README.md | 3 - .../Sub-GHz/esubghz_chat/manifest.yml | 14 - .../Sub-GHz/flipper_share/manifest.yml | 22 - applications/Sub-GHz/fmf_to_sub/README.md | 3 - applications/Sub-GHz/fmf_to_sub/manifest.yml | 16 - applications/Sub-GHz/genie_record/README.md | 3 - .../Sub-GHz/genie_record/manifest.yml | 19 - applications/Sub-GHz/hc11_modem/README.md | 3 - applications/Sub-GHz/hc11_modem/manifest.yml | 16 - applications/Sub-GHz/pocsag_pager/README.md | 3 - .../Sub-GHz/pocsag_pager/manifest.yml | 13 - applications/Sub-GHz/protoview/README.md | 3 - applications/Sub-GHz/protoview/manifest.yml | 13 - applications/Sub-GHz/radio_scanner/README.md | 3 - .../Sub-GHz/radio_scanner/manifest.yml | 17 - .../Sub-GHz/spectrum_analyzer/README.md | 3 - .../Sub-GHz/spectrum_analyzer/manifest.yml | 13 - applications/Sub-GHz/sub_analyzer/README.md | 3 - .../Sub-GHz/sub_analyzer/manifest.yml | 16 - .../Sub-GHz/subghz_remote_ofw/README.md | 3 - .../Sub-GHz/subghz_remote_ofw/manifest.yml | 13 - .../Sub-GHz/subghz_scheduler/README.md | 3 - .../Sub-GHz/subghz_scheduler/manifest.yml | 20 - applications/Sub-GHz/tpms/README.md | 3 - applications/Sub-GHz/tpms/manifest.yml | 15 - .../Sub-GHz/weather_station/README.md | 3 - .../Sub-GHz/weather_station/manifest.yml | 13 - applications/Tools/.gitkeep | 0 applications/Tools/analog_clock/README.md | 3 - applications/Tools/analog_clock/manifest.yml | 11 - .../Tools/animation_switcher/README.md | 14 - .../Tools/animation_switcher/manifest.yml | 16 - applications/Tools/barcode_app/README.md | 3 - applications/Tools/barcode_app/manifest.yml | 13 - applications/Tools/blinker/README.md | 20 - applications/Tools/blinker/manifest.yml | 13 - applications/Tools/brainfuck/README.md | 3 - applications/Tools/brainfuck/manifest.yml | 13 - applications/Tools/caesar_cipher/README.md | 3 - applications/Tools/caesar_cipher/manifest.yml | 12 - applications/Tools/calculator/README.md | 3 - applications/Tools/calculator/manifest.yml | 11 - applications/Tools/can_tools/manifest.yml | 15 - applications/Tools/clock/README.md | 3 - applications/Tools/clock/manifest.yml | 11 - applications/Tools/cntdown_tim/README.md | 3 - applications/Tools/cntdown_tim/manifest.yml | 11 - applications/Tools/combo_cracker/manifest.yml | 21 - applications/Tools/counter/README.md | 3 - applications/Tools/counter/manifest.yml | 12 - applications/Tools/dcf77/README.md | 3 - applications/Tools/dcf77/manifest.yml | 11 - .../Tools/dcf77_clock_spoof/README.md | 41 -- .../Tools/dcf77_clock_spoof/manifest.yml | 12 - applications/Tools/dcf77_clock_sync/README.md | 17 - .../Tools/dcf77_clock_sync/manifest.yml | 11 - applications/Tools/dtmf_dolphin/README.md | 3 - applications/Tools/dtmf_dolphin/manifest.yml | 13 - applications/Tools/enigma/README.md | 3 - applications/Tools/enigma/manifest.yml | 16 - applications/Tools/eye_saver/README.md | 21 - applications/Tools/eye_saver/manifest.yml | 20 - applications/Tools/fast_js_app/README.md | 3 - applications/Tools/fast_js_app/manifest.yml | 19 - applications/Tools/financial_calc/README.md | 3 - .../Tools/financial_calc/manifest.yml | 10 - applications/Tools/fire_string/manifest.yml | 12 - applications/Tools/flip_crypt/manifest.yml | 20 - applications/Tools/flipbip/README.md | 3 - applications/Tools/flipbip/manifest.yml | 17 - applications/Tools/flipp_pomodoro/README.md | 3 - .../Tools/flipp_pomodoro/manifest.yml | 12 - applications/Tools/flipper95/README.md | 3 - applications/Tools/flipper95/manifest.yml | 11 - applications/Tools/flipper_wedge/README.md | 3 - applications/Tools/flipper_wedge/manifest.yml | 28 - .../Tools/flipperzero_clock/README.md | 3 - .../Tools/flipperzero_clock/manifest.yml | 16 - applications/Tools/fmatrix/README.md | 53 -- applications/Tools/fmatrix/manifest.yml | 40 -- applications/Tools/fordradiocode/README.md | 3 - applications/Tools/fordradiocode/changelog.md | 2 - applications/Tools/fordradiocode/manifest.yml | 17 - applications/Tools/hex_editor/README.md | 3 - applications/Tools/hex_editor/manifest.yml | 11 - applications/Tools/hex_viewer/README.md | 3 - applications/Tools/hex_viewer/manifest.yml | 11 - applications/Tools/iconedit/manifest.yml | 13 - applications/Tools/key_copier/README.md | 3 - applications/Tools/key_copier/manifest.yml | 13 - applications/Tools/knit_counter/README.md | 3 - applications/Tools/knit_counter/manifest.yml | 14 - applications/Tools/lishi/README.md | 3 - applications/Tools/lishi/manifest.yml | 12 - applications/Tools/moon_phases/manifest.yml | 12 - applications/Tools/multi_converter/README.md | 3 - .../Tools/multi_converter/manifest.yml | 14 - applications/Tools/multi_counter/README.md | 12 - applications/Tools/multi_counter/manifest.yml | 18 - .../Tools/nfc_rfid_detector/README.md | 3 - .../Tools/nfc_rfid_detector/manifest.yml | 14 - applications/Tools/orgasmotron/README.md | 3 - applications/Tools/orgasmotron/manifest.yml | 11 - applications/Tools/passgen/README.md | 3 - applications/Tools/passgen/manifest.yml | 12 - .../Tools/password_manager/manifest.yml | 17 - applications/Tools/pet_your_dolphin/README.md | 3 - .../Tools/pet_your_dolphin/manifest.yml | 9 - applications/Tools/pomodoro_timer/README.md | 3 - .../Tools/pomodoro_timer/manifest.yml | 11 - applications/Tools/programmercalc/README.md | 3 - .../Tools/programmercalc/manifest.yml | 17 - applications/Tools/qrcode/README.md | 204 ------- applications/Tools/qrcode/manifest.yml | 17 - applications/Tools/qrcode_generator/README.md | 49 -- .../Tools/qrcode_generator/manifest.yml | 12 - applications/Tools/quac/README.md | 3 - applications/Tools/quac/manifest.yml | 13 - applications/Tools/quadratic_solver/README.md | 7 - .../Tools/quadratic_solver/manifest.yml | 19 - applications/Tools/resistors/README.md | 3 - applications/Tools/resistors/manifest.yml | 12 - applications/Tools/roman_decoder/README.md | 3 - applications/Tools/roman_decoder/manifest.yml | 11 - applications/Tools/rot13_app/README.md | 3 - applications/Tools/rot13_app/manifest.yml | 15 - applications/Tools/segment_clock/README.md | 3 - applications/Tools/segment_clock/manifest.yml | 11 - .../Tools/smack_my_dolphin_up/README.md | 3 - .../Tools/smack_my_dolphin_up/manifest.yml | 10 - applications/Tools/tasks/README.md | 3 - applications/Tools/tasks/manifest.yml | 12 - applications/Tools/techart_calendar/README.md | 3 - .../Tools/techart_calendar/manifest.yml | 10 - applications/Tools/text_viewer/README.md | 3 - applications/Tools/text_viewer/manifest.yml | 12 - applications/Tools/theme_manager/manifest.yml | 20 - applications/Tools/tone_gen/README.md | 3 - applications/Tools/tone_gen/manifest.yml | 12 - applications/Tools/totp/README.md | 3 - applications/Tools/totp/manifest.yml | 14 - applications/Tools/trackerflipx/README.md | 3 - applications/Tools/trackerflipx/manifest.yml | 29 - applications/Tools/tree_ident/manifest.yml | 24 - applications/Tools/upython/README.md | 3 - applications/Tools/upython/manifest.yml | 11 - .../Tools/video_game_module_tool/README.md | 3 - .../Tools/video_game_module_tool/manifest.yml | 13 - applications/Tools/vin_decoder/README.md | 3 - applications/Tools/vin_decoder/manifest.yml | 12 - applications/Tools/voltcalc_app/README.md | 3 - applications/Tools/voltcalc_app/manifest.yml | 15 - applications/Tools/wch_swio_flasher/README.md | 3 - .../Tools/wch_swio_flasher/manifest.yml | 12 - applications/USB/.gitkeep | 0 applications/USB/bc_scanner/README.md | 3 - applications/USB/bc_scanner/manifest.yml | 14 - applications/USB/flip_tdi/README.md | 3 - applications/USB/flip_tdi/manifest.yml | 15 - applications/USB/hid_usb/README.md | 19 - applications/USB/hid_usb/manifest.yml | 24 - applications/USB/ldtoypad/README.md | 3 - applications/USB/ldtoypad/manifest.yml | 15 - applications/USB/mass_storage/README.md | 3 - applications/USB/mass_storage/manifest.yml | 12 - applications/USB/mouse_jiggler/README.md | 17 - applications/USB/mouse_jiggler/manifest.yml | 10 - applications/USB/pc_monitor_usb/manifest.yml | 15 - applications/USB/portal_of_flipper/README.md | 3 - .../USB/portal_of_flipper/manifest.yml | 10 - applications/USB/usb_ccb/README.md | 3 - applications/USB/usb_ccb/manifest.yml | 10 - applications/USB/usb_hid_autofire/README.md | 3 - .../USB/usb_hid_autofire/manifest.yml | 11 - applications/USB/xinput_controller/README.md | 3 - .../USB/xinput_controller/manifest.yml | 11 - applications/iButton/.gitkeep | 0 applications/iButton/fuzzer_ibtn/README.md | 3 - applications/iButton/fuzzer_ibtn/manifest.yml | 13 - .../iButton/ibutton_converter/manifest.yml | 13 - documentation/Contributing.md | 81 --- documentation/Manifest.md | 154 ----- documentation/manifest-fields.png | Bin 297752 -> 0 bytes example/manifest.yml | 26 - tools/build.py | 274 --------- tools/bundle.py | 548 ------------------ tools/flipp_catalog/__init__.py | 3 - tools/flipp_catalog/manifest.py | 74 --- tools/flipp_catalog/markdown_filter.py | 111 ---- tools/requirements.txt | 6 - tools/test_markdown_sanitizer.py | 126 ---- tools/widget.py | 79 --- 656 files changed, 8400 deletions(-) delete mode 100644 .github/.ARCHIVARIUS_URL delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/WIDGET_TEMPLATE.md delete mode 100644 .github/actions/bundle/action.yml delete mode 100644 .github/problem-matcher.json delete mode 100644 .github/workflows/build.yml delete mode 100644 .github/workflows/bundle.yml delete mode 100644 .github/workflows/widget.yml delete mode 100644 .gitignore delete mode 100644 ReadMe.md delete mode 100644 applications/Bluetooth/.gitkeep delete mode 100644 applications/Bluetooth/anki_remote/manifest.yml delete mode 100644 applications/Bluetooth/bt_trigger/README.md delete mode 100644 applications/Bluetooth/bt_trigger/manifest.yml delete mode 100644 applications/Bluetooth/bthome/README.md delete mode 100644 applications/Bluetooth/bthome/manifest.yml delete mode 100644 applications/Bluetooth/findmy/README.md delete mode 100644 applications/Bluetooth/findmy/manifest.yml delete mode 100644 applications/Bluetooth/hid_ble/README.md delete mode 100644 applications/Bluetooth/hid_ble/manifest.yml delete mode 100644 applications/Bluetooth/magicband_plus_lights/manifest.yml delete mode 100644 applications/Bluetooth/pc_monitor/README.md delete mode 100644 applications/Bluetooth/pc_monitor/manifest.yml delete mode 100644 applications/GPIO/.gitkeep delete mode 100644 applications/GPIO/24cxxprog/manifest.yml delete mode 100644 applications/GPIO/401_digilab/manifest.yml delete mode 100644 applications/GPIO/401_light_msg/README.md delete mode 100644 applications/GPIO/401_light_msg/manifest.yml delete mode 100644 applications/GPIO/air_mouse/README.md delete mode 100644 applications/GPIO/air_mouse/manifest.yml delete mode 100644 applications/GPIO/airmon/README.md delete mode 100644 applications/GPIO/airmon/manifest.yml delete mode 100644 applications/GPIO/avr_isp/README.md delete mode 100644 applications/GPIO/avr_isp/manifest.yml delete mode 100644 applications/GPIO/bme680_flipper_zero/manifest.yml delete mode 100644 applications/GPIO/camera_suite/README.md delete mode 100644 applications/GPIO/camera_suite/manifest.yml delete mode 100644 applications/GPIO/canfdhs/README.md delete mode 100644 applications/GPIO/canfdhs/manifest.yml delete mode 100644 applications/GPIO/co2_logger/manifest.yml delete mode 100644 applications/GPIO/dap_link/README.md delete mode 100644 applications/GPIO/dap_link/manifest.yml delete mode 100644 applications/GPIO/esp32_wifi_marauder/README.md delete mode 100644 applications/GPIO/esp32_wifi_marauder/manifest.yml delete mode 100644 applications/GPIO/esp_flasher/README.md delete mode 100644 applications/GPIO/esp_flasher/manifest.yml delete mode 100644 applications/GPIO/eth_troubleshooter/README.md delete mode 100644 applications/GPIO/eth_troubleshooter/manifest.yml delete mode 100644 applications/GPIO/fcom/README.md delete mode 100644 applications/GPIO/fcom/manifest.yml delete mode 100644 applications/GPIO/fencing_testbox/README.md delete mode 100644 applications/GPIO/fencing_testbox/manifest.yml delete mode 100644 applications/GPIO/flashlight/README.md delete mode 100644 applications/GPIO/flashlight/manifest.yml delete mode 100644 applications/GPIO/flip_downloader/README.md delete mode 100644 applications/GPIO/flip_downloader/manifest.yml delete mode 100644 applications/GPIO/flip_gemini/manifest.yml delete mode 100644 applications/GPIO/flip_library/README.md delete mode 100644 applications/GPIO/flip_library/manifest.yml delete mode 100644 applications/GPIO/flip_map/manifest.yml delete mode 100644 applications/GPIO/flip_rpi/README.md delete mode 100644 applications/GPIO/flip_rpi/manifest.yml delete mode 100644 applications/GPIO/flip_social/README.md delete mode 100644 applications/GPIO/flip_social/manifest.yml delete mode 100644 applications/GPIO/flip_telegram/manifest.yml delete mode 100644 applications/GPIO/flip_trader/README.md delete mode 100644 applications/GPIO/flip_trader/manifest.yml delete mode 100644 applications/GPIO/flip_weather/README.md delete mode 100644 applications/GPIO/flip_weather/manifest.yml delete mode 100644 applications/GPIO/flip_wifi/README.md delete mode 100644 applications/GPIO/flip_wifi/manifest.yml delete mode 100644 applications/GPIO/flip_world/README.md delete mode 100644 applications/GPIO/flip_world/manifest.yml delete mode 100644 applications/GPIO/flipagotchi/README.md delete mode 100644 applications/GPIO/flipagotchi/manifest.yml delete mode 100644 applications/GPIO/flipboard_blinky/README.md delete mode 100644 applications/GPIO/flipboard_blinky/manifest.yml delete mode 100644 applications/GPIO/flipboard_keyboard/README.md delete mode 100644 applications/GPIO/flipboard_keyboard/manifest.yml delete mode 100644 applications/GPIO/flipboard_signal/README.md delete mode 100644 applications/GPIO/flipboard_signal/manifest.yml delete mode 100644 applications/GPIO/flipboard_simon/README.md delete mode 100644 applications/GPIO/flipboard_simon/manifest.yml delete mode 100644 applications/GPIO/flipper_gb_printer/README.md delete mode 100644 applications/GPIO/flipper_gb_printer/manifest.yml delete mode 100644 applications/GPIO/flipper_geiger/README.md delete mode 100644 applications/GPIO/flipper_geiger/manifest.yml delete mode 100644 applications/GPIO/flipper_http/manifest.yml delete mode 100644 applications/GPIO/flipper_spi_terminal/README.md delete mode 100644 applications/GPIO/flipper_spi_terminal/manifest.yml delete mode 100644 applications/GPIO/flipperscope/README.md delete mode 100644 applications/GPIO/flipperscope/manifest.yml delete mode 100644 applications/GPIO/fn_test/README.md delete mode 100644 applications/GPIO/fn_test/manifest.yml delete mode 100644 applications/GPIO/free_roam/manifest.yml delete mode 100644 applications/GPIO/gemini_ia/README.md delete mode 100644 applications/GPIO/gemini_ia/manifest.yml delete mode 100644 applications/GPIO/ghost_esp/manifest.yml delete mode 100644 applications/GPIO/gpio_7segment_output/README.md delete mode 100644 applications/GPIO/gpio_7segment_output/manifest.yml delete mode 100644 applications/GPIO/gpio_controller/README.md delete mode 100644 applications/GPIO/gpio_controller/manifest.yml delete mode 100644 applications/GPIO/gpio_explorer_app/README.md delete mode 100644 applications/GPIO/gpio_explorer_app/manifest.yml delete mode 100644 applications/GPIO/gpio_reader/README.md delete mode 100644 applications/GPIO/gpio_reader/manifest.yml delete mode 100644 applications/GPIO/gpio_sentry_safe/README.md delete mode 100644 applications/GPIO/gpio_sentry_safe/manifest.yml delete mode 100644 applications/GPIO/gps_nmea/README.md delete mode 100644 applications/GPIO/gps_nmea/manifest.yml delete mode 100644 applications/GPIO/i2ctools/README.md delete mode 100644 applications/GPIO/i2ctools/manifest.yml delete mode 100644 applications/GPIO/ina_meter/README.md delete mode 100644 applications/GPIO/ina_meter/manifest.yml delete mode 100644 applications/GPIO/ld2410_human_detector/README.md delete mode 100644 applications/GPIO/ld2410_human_detector/manifest.yml delete mode 100644 applications/GPIO/lightmeter/README.md delete mode 100644 applications/GPIO/lightmeter/manifest.yml delete mode 100644 applications/GPIO/logic_analyzer/README.md delete mode 100644 applications/GPIO/logic_analyzer/manifest.yml delete mode 100644 applications/GPIO/longwave_clock/README.md delete mode 100644 applications/GPIO/longwave_clock/manifest.yml delete mode 100644 applications/GPIO/magspoof/README.md delete mode 100644 applications/GPIO/magspoof/manifest.yml delete mode 100644 applications/GPIO/malveke_gb_cartridge/README.md delete mode 100644 applications/GPIO/malveke_gb_cartridge/manifest.yml delete mode 100644 applications/GPIO/malveke_gb_link_camera/README.md delete mode 100644 applications/GPIO/malveke_gb_link_camera/manifest.yml delete mode 100644 applications/GPIO/malveke_gb_live_camera/README.md delete mode 100644 applications/GPIO/malveke_gb_live_camera/manifest.yml delete mode 100644 applications/GPIO/malveke_gb_photo/README.md delete mode 100644 applications/GPIO/malveke_gb_photo/manifest.yml delete mode 100644 applications/GPIO/malveke_gba_cartridge/README.md delete mode 100644 applications/GPIO/malveke_gba_cartridge/manifest.yml delete mode 100644 applications/GPIO/max31855/README.md delete mode 100644 applications/GPIO/max31855/manifest.yml delete mode 100644 applications/GPIO/mh_z19/README.md delete mode 100644 applications/GPIO/mh_z19/manifest.yml delete mode 100644 applications/GPIO/mhz19_uart/README.md delete mode 100644 applications/GPIO/mhz19_uart/manifest.yml delete mode 100644 applications/GPIO/moisture_sensor/manifest.yml delete mode 100644 applications/GPIO/nearby_files/manifest.yml delete mode 100644 applications/GPIO/noptel_lrf_sampler/README.md delete mode 100644 applications/GPIO/noptel_lrf_sampler/manifest.yml delete mode 100644 applications/GPIO/nrf24channelscanner/README.md delete mode 100644 applications/GPIO/nrf24channelscanner/manifest.yml delete mode 100644 applications/GPIO/pokemon/README.md delete mode 100644 applications/GPIO/pokemon/manifest.yml delete mode 100644 applications/GPIO/radar_scanner/README.md delete mode 100644 applications/GPIO/radar_scanner/manifest.yml delete mode 100644 applications/GPIO/radsens/README.md delete mode 100644 applications/GPIO/radsens/manifest.yml delete mode 100644 applications/GPIO/sd_spi_app/README.md delete mode 100644 applications/GPIO/sd_spi_app/manifest.yml delete mode 100644 applications/GPIO/servotester/README.md delete mode 100644 applications/GPIO/servotester/manifest.yml delete mode 100644 applications/GPIO/servotesterapp/README.md delete mode 100644 applications/GPIO/servotesterapp/manifest.yml delete mode 100644 applications/GPIO/signal_generator/README.md delete mode 100644 applications/GPIO/signal_generator/manifest.yml delete mode 100644 applications/GPIO/simultaneous_rfid_reader/README.md delete mode 100644 applications/GPIO/simultaneous_rfid_reader/manifest.yml delete mode 100644 applications/GPIO/sio2flip/README.md delete mode 100644 applications/GPIO/sio2flip/manifest.yml delete mode 100644 applications/GPIO/spi_mem_manager/README.md delete mode 100644 applications/GPIO/spi_mem_manager/manifest.yml delete mode 100644 applications/GPIO/stepcounter/README.md delete mode 100644 applications/GPIO/stepcounter/manifest.yml delete mode 100644 applications/GPIO/swd_probe/README.md delete mode 100644 applications/GPIO/swd_probe/manifest.yml rename applications/GPIO/{tesla_fsd => tesla_mod}/manifest.yml (100%) delete mode 100644 applications/GPIO/uart_terminal/README.md delete mode 100644 applications/GPIO/uart_terminal/manifest.yml delete mode 100644 applications/GPIO/ublox/README.md delete mode 100644 applications/GPIO/ublox/manifest.yml delete mode 100644 applications/GPIO/uhf_rfid/README.md delete mode 100644 applications/GPIO/uhf_rfid/manifest.yml delete mode 100644 applications/GPIO/unitemp/README.md delete mode 100644 applications/GPIO/unitemp/manifest.yml delete mode 100644 applications/GPIO/usping/README.md delete mode 100644 applications/GPIO/usping/manifest.yml delete mode 100644 applications/GPIO/uv_meter_as7331/manifest.yml delete mode 100644 applications/GPIO/veml7700luxmeter/manifest.yml delete mode 100644 applications/GPIO/vgm_air_mouse/README.md delete mode 100644 applications/GPIO/vgm_air_mouse/manifest.yml delete mode 100644 applications/GPIO/vgm_game_remote/README.md delete mode 100644 applications/GPIO/vgm_game_remote/manifest.yml delete mode 100644 applications/GPIO/web_crawler/README.md delete mode 100644 applications/GPIO/web_crawler/manifest.yml delete mode 100644 applications/GPIO/wiegand_reader/README.md delete mode 100644 applications/GPIO/wiegand_reader/manifest.yml delete mode 100644 applications/GPIO/wire_tester/README.md delete mode 100644 applications/GPIO/wire_tester/manifest.yml delete mode 100644 applications/GPIO/ws2812b_tester_app/README.md delete mode 100644 applications/GPIO/ws2812b_tester_app/manifest.yml delete mode 100644 applications/GPIO/zeitraffer/README.md delete mode 100644 applications/GPIO/zeitraffer/manifest.yml delete mode 100644 applications/Games/.gitkeep delete mode 100644 applications/Games/4inrow/README.md delete mode 100644 applications/Games/4inrow/manifest.yml delete mode 100644 applications/Games/air_arkanoid/README.md delete mode 100644 applications/Games/air_arkanoid/manifest.yml delete mode 100644 applications/Games/air_labyrinth/README.md delete mode 100644 applications/Games/air_labyrinth/manifest.yml delete mode 100644 applications/Games/apple_grabber/README.md delete mode 100644 applications/Games/apple_grabber/manifest.yml delete mode 100644 applications/Games/arddrivin/manifest.yml delete mode 100644 applications/Games/ardugolf/manifest.yml delete mode 100644 applications/Games/arduventure/manifest.yml delete mode 100644 applications/Games/arkanoid/README.md delete mode 100644 applications/Games/arkanoid/manifest.yml delete mode 100644 applications/Games/asteroids/README.md delete mode 100644 applications/Games/asteroids/manifest.yml delete mode 100644 applications/Games/banana/README.md delete mode 100644 applications/Games/banana/manifest.yml delete mode 100644 applications/Games/bomberduck/README.md delete mode 100644 applications/Games/bomberduck/manifest.yml delete mode 100644 applications/Games/bzzbzz/manifest.yml delete mode 100644 applications/Games/catacombs/manifest.yml delete mode 100644 applications/Games/chess/README.md delete mode 100644 applications/Games/chess/manifest.yml delete mode 100644 applications/Games/citybloxx/README.md delete mode 100644 applications/Games/citybloxx/manifest.yml delete mode 100644 applications/Games/color_guess/README.md delete mode 100644 applications/Games/color_guess/manifest.yml delete mode 100644 applications/Games/countdown/README.md delete mode 100644 applications/Games/countdown/manifest.yml delete mode 100644 applications/Games/deadzone/README.md delete mode 100644 applications/Games/deadzone/manifest.yml delete mode 100644 applications/Games/dice_app/README.md delete mode 100644 applications/Games/dice_app/manifest.yml delete mode 100644 applications/Games/digital_kaleidoscope/README.md delete mode 100644 applications/Games/digital_kaleidoscope/manifest.yml delete mode 100644 applications/Games/doom/README.md delete mode 100644 applications/Games/doom/manifest.yml delete mode 100644 applications/Games/drifter/README.md delete mode 100644 applications/Games/drifter/manifest.yml delete mode 100644 applications/Games/eightball/README.md delete mode 100644 applications/Games/eightball/manifest.yml delete mode 100644 applications/Games/fighterjet/README.md delete mode 100644 applications/Games/fighterjet/manifest.yml delete mode 100644 applications/Games/flappy_bird/README.md delete mode 100644 applications/Games/flappy_bird/manifest.yml delete mode 100644 applications/Games/flight_assault/README.md delete mode 100644 applications/Games/flight_assault/manifest.yml delete mode 100644 applications/Games/flipper_hero/README.md delete mode 100644 applications/Games/flipper_hero/manifest.yml delete mode 100644 applications/Games/flipper_pong/README.md delete mode 100644 applications/Games/flipper_pong/manifest.yml delete mode 100644 applications/Games/flipperpose/README.md delete mode 100644 applications/Games/flipperpose/manifest.yml delete mode 100644 applications/Games/flipperzero_fnaf/README.md delete mode 100644 applications/Games/flipperzero_fnaf/manifest.yml delete mode 100644 applications/Games/flippy_road/README.md delete mode 100644 applications/Games/flippy_road/manifest.yml delete mode 100644 applications/Games/fortune_cookie/README.md delete mode 100644 applications/Games/fortune_cookie/manifest.yml delete mode 100644 applications/Games/furious_birds/README.md delete mode 100644 applications/Games/furious_birds/manifest.yml delete mode 100644 applications/Games/game15/README.md delete mode 100644 applications/Games/game15/manifest.yml delete mode 100644 applications/Games/game_2048/README.md delete mode 100644 applications/Games/game_2048/manifest.yml delete mode 100644 applications/Games/game_connect_wires/README.md delete mode 100644 applications/Games/game_connect_wires/manifest.yml delete mode 100644 applications/Games/game_hanoi_towers/README.md delete mode 100644 applications/Games/game_hanoi_towers/manifest.yml delete mode 100644 applications/Games/game_vexed/README.md delete mode 100644 applications/Games/game_vexed/manifest.yml delete mode 100644 applications/Games/gameoflife/README.md delete mode 100644 applications/Games/gameoflife/manifest.yml delete mode 100644 applications/Games/hangman/README.md delete mode 100644 applications/Games/hangman/manifest.yml delete mode 100644 applications/Games/heap_defence/README.md delete mode 100644 applications/Games/heap_defence/manifest.yml delete mode 100644 applications/Games/jetpack_game/README.md delete mode 100644 applications/Games/jetpack_game/manifest.yml delete mode 100644 applications/Games/kcline/README.md delete mode 100644 applications/Games/kcline/manifest.yml delete mode 100644 applications/Games/laser_tag/README.md delete mode 100644 applications/Games/laser_tag/manifest.yml delete mode 100644 applications/Games/lifecounter/README.md delete mode 100644 applications/Games/lifecounter/manifest.yml delete mode 100644 applications/Games/mandelbrotset/README.md delete mode 100644 applications/Games/mandelbrotset/manifest.yml delete mode 100644 applications/Games/matagotchi/README.md delete mode 100644 applications/Games/matagotchi/manifest.yml delete mode 100644 applications/Games/minesweeper_redux/README.md delete mode 100644 applications/Games/minesweeper_redux/manifest.yml delete mode 100644 applications/Games/montyhall/README.md delete mode 100644 applications/Games/montyhall/manifest.yml delete mode 100644 applications/Games/myblab/manifest.yml delete mode 100644 applications/Games/nupogodi/README.md delete mode 100644 applications/Games/nupogodi/manifest.yml delete mode 100644 applications/Games/paint/README.md delete mode 100644 applications/Games/paint/manifest.yml delete mode 100644 applications/Games/pinball0/README.md delete mode 100644 applications/Games/pinball0/manifest.yml delete mode 100644 applications/Games/princeofarabia/manifest.yml delete mode 100644 applications/Games/quadrastic/README.md delete mode 100644 applications/Games/quadrastic/manifest.yml delete mode 100644 applications/Games/questions/README.md delete mode 100644 applications/Games/questions/manifest.yml delete mode 100644 applications/Games/race_game/manifest.yml delete mode 100644 applications/Games/racegame/README.md delete mode 100644 applications/Games/racegame/manifest.yml delete mode 100644 applications/Games/racso_sokoban/README.md delete mode 100644 applications/Games/racso_sokoban/manifest.yml delete mode 100644 applications/Games/racso_ultimate_tic_tac_toe/README.md delete mode 100644 applications/Games/racso_ultimate_tic_tac_toe/manifest.yml delete mode 100644 applications/Games/racso_zero/README.md delete mode 100644 applications/Games/racso_zero/manifest.yml delete mode 100644 applications/Games/reaction/README.md delete mode 100644 applications/Games/reaction/manifest.yml delete mode 100644 applications/Games/reversi/README.md delete mode 100644 applications/Games/reversi/manifest.yml delete mode 100644 applications/Games/rock_paper_scissors/README.md delete mode 100644 applications/Games/rock_paper_scissors/manifest.yml delete mode 100644 applications/Games/roots_of_life/README.md delete mode 100644 applications/Games/roots_of_life/manifest.yml delete mode 100644 applications/Games/rubiks_cube_scrambler/README.md delete mode 100644 applications/Games/rubiks_cube_scrambler/manifest.yml delete mode 100644 applications/Games/scorched_tanks/README.md delete mode 100644 applications/Games/scorched_tanks/manifest.yml delete mode 100644 applications/Games/secret_toggle/README.md delete mode 100644 applications/Games/secret_toggle/manifest.yml delete mode 100644 applications/Games/slotmachine/README.md delete mode 100644 applications/Games/slotmachine/manifest.yml delete mode 100644 applications/Games/snake20/README.md delete mode 100644 applications/Games/snake20/manifest.yml delete mode 100644 applications/Games/spaceimpactii985e/README.md delete mode 100644 applications/Games/spaceimpactii985e/manifest.yml delete mode 100644 applications/Games/sudoku/README.md delete mode 100644 applications/Games/sudoku/manifest.yml delete mode 100644 applications/Games/swimmy_fish/manifest.yml delete mode 100644 applications/Games/t_rex_runner/README.md delete mode 100644 applications/Games/t_rex_runner/manifest.yml delete mode 100644 applications/Games/tarot/README.md delete mode 100644 applications/Games/tarot/manifest.yml delete mode 100644 applications/Games/tetris/README.md delete mode 100644 applications/Games/tetris/manifest.yml delete mode 100644 applications/Games/tictactoe/README.md delete mode 100644 applications/Games/tictactoe/manifest.yml delete mode 100644 applications/Games/umpire_indicator/README.md delete mode 100644 applications/Games/umpire_indicator/manifest.yml delete mode 100644 applications/Games/videopoker/README.md delete mode 100644 applications/Games/videopoker/manifest.yml delete mode 100644 applications/Games/wave/manifest.yml delete mode 100644 applications/Games/wolfenduino/manifest.yml delete mode 100644 applications/Games/xyz_vh8t_slots/manifest.yml delete mode 100644 applications/Games/yatzee/README.md delete mode 100644 applications/Games/yatzee/manifest.yml delete mode 100644 applications/Games/zombiez/README.md delete mode 100644 applications/Games/zombiez/manifest.yml delete mode 100644 applications/Infrared/.gitkeep delete mode 100644 applications/Infrared/flame_rng/manifest.yml delete mode 100644 applications/Infrared/flipper_xremote/README.md delete mode 100644 applications/Infrared/flipper_xremote/manifest.yml delete mode 100644 applications/Infrared/hitachi_ac_remote/README.md delete mode 100644 applications/Infrared/hitachi_ac_remote/manifest.yml delete mode 100644 applications/Infrared/htw_ac_remote/README.md delete mode 100644 applications/Infrared/htw_ac_remote/manifest.yml delete mode 100644 applications/Infrared/ir_intervalometer/README.md delete mode 100644 applications/Infrared/ir_intervalometer/manifest.yml delete mode 100644 applications/Infrared/ir_scope/README.md delete mode 100644 applications/Infrared/ir_scope/manifest.yml delete mode 100644 applications/Infrared/lidar_emulator/README.md delete mode 100644 applications/Infrared/lidar_emulator/manifest.yml delete mode 100644 applications/Infrared/midea_ac_remote/README.md delete mode 100644 applications/Infrared/midea_ac_remote/manifest.yml delete mode 100644 applications/Infrared/mitsubishi_ac_remote/README.md delete mode 100644 applications/Infrared/mitsubishi_ac_remote/manifest.yml delete mode 100644 applications/Infrared/pause_timer/manifest.yml delete mode 100644 applications/Infrared/tamagometer_companion/README.md delete mode 100644 applications/Infrared/tamagometer_companion/manifest.yml delete mode 100644 applications/Infrared/timed_remote/README.md delete mode 100644 applications/Infrared/timed_remote/manifest.yml delete mode 100644 applications/Infrared/xbox_controller/README.md delete mode 100644 applications/Infrared/xbox_controller/manifest.yml delete mode 100644 applications/Infrared/xremote/README.md delete mode 100644 applications/Infrared/xremote/manifest.yml delete mode 100644 applications/Media/.gitkeep delete mode 100644 applications/Media/atm/manifest.yml delete mode 100644 applications/Media/bpm_tapper/README.md delete mode 100644 applications/Media/bpm_tapper/manifest.yml delete mode 100644 applications/Media/dvd_screensaver/README.md delete mode 100644 applications/Media/dvd_screensaver/manifest.yml delete mode 100644 applications/Media/executor_keychain/README.md delete mode 100644 applications/Media/executor_keychain/manifest.yml delete mode 100644 applications/Media/flizzer_tracker/README.md delete mode 100644 applications/Media/flizzer_tracker/manifest.yml delete mode 100644 applications/Media/fzspground/manifest.yml delete mode 100644 applications/Media/image_viewer/README.md delete mode 100644 applications/Media/image_viewer/manifest.yml delete mode 100644 applications/Media/metronome/README.md delete mode 100644 applications/Media/metronome/manifest.yml delete mode 100644 applications/Media/morse_code/README.md delete mode 100644 applications/Media/morse_code/manifest.yml delete mode 100644 applications/Media/morse_master/manifest.yml delete mode 100644 applications/Media/music_player/README.md delete mode 100644 applications/Media/music_player/manifest.yml delete mode 100644 applications/Media/ocarina/README.md delete mode 100644 applications/Media/ocarina/manifest.yml delete mode 100644 applications/Media/text2sam/README.md delete mode 100644 applications/Media/text2sam/manifest.yml delete mode 100644 applications/Media/tuning_fork/README.md delete mode 100644 applications/Media/tuning_fork/manifest.yml delete mode 100644 applications/Media/usb_midi/README.md delete mode 100644 applications/Media/usb_midi/manifest.yml delete mode 100644 applications/Media/video_player/README.md delete mode 100644 applications/Media/video_player/manifest.yml delete mode 100644 applications/Media/wav_player/README.md delete mode 100644 applications/Media/wav_player/manifest.yml delete mode 100644 applications/Media/zero_tracker/README.md delete mode 100644 applications/Media/zero_tracker/manifest.yml delete mode 100644 applications/NFC/.gitkeep delete mode 100644 applications/NFC/cyborg_detector/README.md delete mode 100644 applications/NFC/cyborg_detector/manifest.yml delete mode 100644 applications/NFC/metroflip/README.md delete mode 100644 applications/NFC/metroflip/manifest.yml delete mode 100644 applications/NFC/mfc_editor/README.md delete mode 100644 applications/NFC/mfc_editor/manifest.yml delete mode 100644 applications/NFC/mfkey/README.md delete mode 100644 applications/NFC/mfkey/manifest.yml delete mode 100644 applications/NFC/miband_nfc/README.md delete mode 100644 applications/NFC/miband_nfc/manifest.yml delete mode 100644 applications/NFC/mifare_fuzzer/README.md delete mode 100644 applications/NFC/mifare_fuzzer/manifest.yml delete mode 100644 applications/NFC/networking_nfc_qr_app/manifest.yml delete mode 100644 applications/NFC/nfc_apdu_runner/README.md delete mode 100644 applications/NFC/nfc_apdu_runner/manifest.yml delete mode 100644 applications/NFC/nfc_eink/README.md delete mode 100644 applications/NFC/nfc_eink/manifest.yml delete mode 100644 applications/NFC/nfc_login/manifest.yml delete mode 100644 applications/NFC/nfc_magic/README.md delete mode 100644 applications/NFC/nfc_magic/manifest.yml delete mode 100644 applications/NFC/nfc_maker/README.md delete mode 100644 applications/NFC/nfc_maker/manifest.yml delete mode 100644 applications/NFC/nfcurl/README.md delete mode 100644 applications/NFC/nfcurl/manifest.yml delete mode 100644 applications/NFC/passy/README.md delete mode 100644 applications/NFC/passy/manifest.yml delete mode 100644 applications/NFC/picopass/README.md delete mode 100644 applications/NFC/picopass/manifest.yml delete mode 100644 applications/NFC/seader/README.md delete mode 100644 applications/NFC/seader/manifest.yml delete mode 100644 applications/NFC/seos/README.md delete mode 100644 applications/NFC/seos/manifest.yml delete mode 100644 applications/NFC/udecard/manifest.yml delete mode 100644 applications/NFC/vb_migrate/README.md delete mode 100644 applications/NFC/vb_migrate/manifest.yml delete mode 100644 applications/NFC/vk_thermo/manifest.yml delete mode 100644 applications/NFC/weebo/manifest.yml delete mode 100644 applications/RFID/.gitkeep delete mode 100644 applications/RFID/fdxb_maker/manifest.yml delete mode 100644 applications/RFID/fuzzer_rfid/README.md delete mode 100644 applications/RFID/fuzzer_rfid/manifest.yml delete mode 100644 applications/RFID/key_generator/README.md delete mode 100644 applications/RFID/key_generator/manifest.yml delete mode 100644 applications/RFID/t5577_multiwriter/README.md delete mode 100644 applications/RFID/t5577_multiwriter/manifest.yml delete mode 100644 applications/RFID/t5577_writer/README.md delete mode 100644 applications/RFID/t5577_writer/manifest.yml delete mode 100644 applications/Sub-GHz/.gitkeep delete mode 100644 applications/Sub-GHz/esubghz_chat/README.md delete mode 100644 applications/Sub-GHz/esubghz_chat/manifest.yml delete mode 100644 applications/Sub-GHz/flipper_share/manifest.yml delete mode 100644 applications/Sub-GHz/fmf_to_sub/README.md delete mode 100644 applications/Sub-GHz/fmf_to_sub/manifest.yml delete mode 100644 applications/Sub-GHz/genie_record/README.md delete mode 100644 applications/Sub-GHz/genie_record/manifest.yml delete mode 100644 applications/Sub-GHz/hc11_modem/README.md delete mode 100644 applications/Sub-GHz/hc11_modem/manifest.yml delete mode 100644 applications/Sub-GHz/pocsag_pager/README.md delete mode 100644 applications/Sub-GHz/pocsag_pager/manifest.yml delete mode 100644 applications/Sub-GHz/protoview/README.md delete mode 100644 applications/Sub-GHz/protoview/manifest.yml delete mode 100644 applications/Sub-GHz/radio_scanner/README.md delete mode 100644 applications/Sub-GHz/radio_scanner/manifest.yml delete mode 100644 applications/Sub-GHz/spectrum_analyzer/README.md delete mode 100644 applications/Sub-GHz/spectrum_analyzer/manifest.yml delete mode 100644 applications/Sub-GHz/sub_analyzer/README.md delete mode 100644 applications/Sub-GHz/sub_analyzer/manifest.yml delete mode 100644 applications/Sub-GHz/subghz_remote_ofw/README.md delete mode 100644 applications/Sub-GHz/subghz_remote_ofw/manifest.yml delete mode 100644 applications/Sub-GHz/subghz_scheduler/README.md delete mode 100644 applications/Sub-GHz/subghz_scheduler/manifest.yml delete mode 100644 applications/Sub-GHz/tpms/README.md delete mode 100644 applications/Sub-GHz/tpms/manifest.yml delete mode 100644 applications/Sub-GHz/weather_station/README.md delete mode 100644 applications/Sub-GHz/weather_station/manifest.yml delete mode 100644 applications/Tools/.gitkeep delete mode 100644 applications/Tools/analog_clock/README.md delete mode 100644 applications/Tools/analog_clock/manifest.yml delete mode 100644 applications/Tools/animation_switcher/README.md delete mode 100644 applications/Tools/animation_switcher/manifest.yml delete mode 100644 applications/Tools/barcode_app/README.md delete mode 100644 applications/Tools/barcode_app/manifest.yml delete mode 100644 applications/Tools/blinker/README.md delete mode 100644 applications/Tools/blinker/manifest.yml delete mode 100644 applications/Tools/brainfuck/README.md delete mode 100644 applications/Tools/brainfuck/manifest.yml delete mode 100644 applications/Tools/caesar_cipher/README.md delete mode 100644 applications/Tools/caesar_cipher/manifest.yml delete mode 100644 applications/Tools/calculator/README.md delete mode 100644 applications/Tools/calculator/manifest.yml delete mode 100644 applications/Tools/can_tools/manifest.yml delete mode 100644 applications/Tools/clock/README.md delete mode 100644 applications/Tools/clock/manifest.yml delete mode 100644 applications/Tools/cntdown_tim/README.md delete mode 100644 applications/Tools/cntdown_tim/manifest.yml delete mode 100644 applications/Tools/combo_cracker/manifest.yml delete mode 100644 applications/Tools/counter/README.md delete mode 100644 applications/Tools/counter/manifest.yml delete mode 100644 applications/Tools/dcf77/README.md delete mode 100644 applications/Tools/dcf77/manifest.yml delete mode 100644 applications/Tools/dcf77_clock_spoof/README.md delete mode 100644 applications/Tools/dcf77_clock_spoof/manifest.yml delete mode 100644 applications/Tools/dcf77_clock_sync/README.md delete mode 100644 applications/Tools/dcf77_clock_sync/manifest.yml delete mode 100644 applications/Tools/dtmf_dolphin/README.md delete mode 100644 applications/Tools/dtmf_dolphin/manifest.yml delete mode 100644 applications/Tools/enigma/README.md delete mode 100644 applications/Tools/enigma/manifest.yml delete mode 100644 applications/Tools/eye_saver/README.md delete mode 100644 applications/Tools/eye_saver/manifest.yml delete mode 100644 applications/Tools/fast_js_app/README.md delete mode 100644 applications/Tools/fast_js_app/manifest.yml delete mode 100644 applications/Tools/financial_calc/README.md delete mode 100644 applications/Tools/financial_calc/manifest.yml delete mode 100644 applications/Tools/fire_string/manifest.yml delete mode 100644 applications/Tools/flip_crypt/manifest.yml delete mode 100644 applications/Tools/flipbip/README.md delete mode 100644 applications/Tools/flipbip/manifest.yml delete mode 100644 applications/Tools/flipp_pomodoro/README.md delete mode 100644 applications/Tools/flipp_pomodoro/manifest.yml delete mode 100644 applications/Tools/flipper95/README.md delete mode 100644 applications/Tools/flipper95/manifest.yml delete mode 100644 applications/Tools/flipper_wedge/README.md delete mode 100644 applications/Tools/flipper_wedge/manifest.yml delete mode 100644 applications/Tools/flipperzero_clock/README.md delete mode 100644 applications/Tools/flipperzero_clock/manifest.yml delete mode 100644 applications/Tools/fmatrix/README.md delete mode 100644 applications/Tools/fmatrix/manifest.yml delete mode 100644 applications/Tools/fordradiocode/README.md delete mode 100644 applications/Tools/fordradiocode/changelog.md delete mode 100644 applications/Tools/fordradiocode/manifest.yml delete mode 100644 applications/Tools/hex_editor/README.md delete mode 100644 applications/Tools/hex_editor/manifest.yml delete mode 100644 applications/Tools/hex_viewer/README.md delete mode 100644 applications/Tools/hex_viewer/manifest.yml delete mode 100644 applications/Tools/iconedit/manifest.yml delete mode 100644 applications/Tools/key_copier/README.md delete mode 100644 applications/Tools/key_copier/manifest.yml delete mode 100644 applications/Tools/knit_counter/README.md delete mode 100644 applications/Tools/knit_counter/manifest.yml delete mode 100644 applications/Tools/lishi/README.md delete mode 100644 applications/Tools/lishi/manifest.yml delete mode 100644 applications/Tools/moon_phases/manifest.yml delete mode 100644 applications/Tools/multi_converter/README.md delete mode 100644 applications/Tools/multi_converter/manifest.yml delete mode 100644 applications/Tools/multi_counter/README.md delete mode 100644 applications/Tools/multi_counter/manifest.yml delete mode 100644 applications/Tools/nfc_rfid_detector/README.md delete mode 100644 applications/Tools/nfc_rfid_detector/manifest.yml delete mode 100644 applications/Tools/orgasmotron/README.md delete mode 100644 applications/Tools/orgasmotron/manifest.yml delete mode 100644 applications/Tools/passgen/README.md delete mode 100644 applications/Tools/passgen/manifest.yml delete mode 100644 applications/Tools/password_manager/manifest.yml delete mode 100644 applications/Tools/pet_your_dolphin/README.md delete mode 100644 applications/Tools/pet_your_dolphin/manifest.yml delete mode 100644 applications/Tools/pomodoro_timer/README.md delete mode 100644 applications/Tools/pomodoro_timer/manifest.yml delete mode 100644 applications/Tools/programmercalc/README.md delete mode 100644 applications/Tools/programmercalc/manifest.yml delete mode 100644 applications/Tools/qrcode/README.md delete mode 100644 applications/Tools/qrcode/manifest.yml delete mode 100644 applications/Tools/qrcode_generator/README.md delete mode 100644 applications/Tools/qrcode_generator/manifest.yml delete mode 100644 applications/Tools/quac/README.md delete mode 100644 applications/Tools/quac/manifest.yml delete mode 100644 applications/Tools/quadratic_solver/README.md delete mode 100644 applications/Tools/quadratic_solver/manifest.yml delete mode 100644 applications/Tools/resistors/README.md delete mode 100644 applications/Tools/resistors/manifest.yml delete mode 100644 applications/Tools/roman_decoder/README.md delete mode 100644 applications/Tools/roman_decoder/manifest.yml delete mode 100644 applications/Tools/rot13_app/README.md delete mode 100644 applications/Tools/rot13_app/manifest.yml delete mode 100644 applications/Tools/segment_clock/README.md delete mode 100644 applications/Tools/segment_clock/manifest.yml delete mode 100644 applications/Tools/smack_my_dolphin_up/README.md delete mode 100644 applications/Tools/smack_my_dolphin_up/manifest.yml delete mode 100644 applications/Tools/tasks/README.md delete mode 100644 applications/Tools/tasks/manifest.yml delete mode 100644 applications/Tools/techart_calendar/README.md delete mode 100644 applications/Tools/techart_calendar/manifest.yml delete mode 100644 applications/Tools/text_viewer/README.md delete mode 100644 applications/Tools/text_viewer/manifest.yml delete mode 100644 applications/Tools/theme_manager/manifest.yml delete mode 100644 applications/Tools/tone_gen/README.md delete mode 100644 applications/Tools/tone_gen/manifest.yml delete mode 100644 applications/Tools/totp/README.md delete mode 100644 applications/Tools/totp/manifest.yml delete mode 100644 applications/Tools/trackerflipx/README.md delete mode 100644 applications/Tools/trackerflipx/manifest.yml delete mode 100644 applications/Tools/tree_ident/manifest.yml delete mode 100644 applications/Tools/upython/README.md delete mode 100644 applications/Tools/upython/manifest.yml delete mode 100644 applications/Tools/video_game_module_tool/README.md delete mode 100644 applications/Tools/video_game_module_tool/manifest.yml delete mode 100644 applications/Tools/vin_decoder/README.md delete mode 100644 applications/Tools/vin_decoder/manifest.yml delete mode 100644 applications/Tools/voltcalc_app/README.md delete mode 100644 applications/Tools/voltcalc_app/manifest.yml delete mode 100644 applications/Tools/wch_swio_flasher/README.md delete mode 100644 applications/Tools/wch_swio_flasher/manifest.yml delete mode 100644 applications/USB/.gitkeep delete mode 100644 applications/USB/bc_scanner/README.md delete mode 100644 applications/USB/bc_scanner/manifest.yml delete mode 100644 applications/USB/flip_tdi/README.md delete mode 100644 applications/USB/flip_tdi/manifest.yml delete mode 100644 applications/USB/hid_usb/README.md delete mode 100644 applications/USB/hid_usb/manifest.yml delete mode 100644 applications/USB/ldtoypad/README.md delete mode 100644 applications/USB/ldtoypad/manifest.yml delete mode 100644 applications/USB/mass_storage/README.md delete mode 100644 applications/USB/mass_storage/manifest.yml delete mode 100644 applications/USB/mouse_jiggler/README.md delete mode 100644 applications/USB/mouse_jiggler/manifest.yml delete mode 100644 applications/USB/pc_monitor_usb/manifest.yml delete mode 100644 applications/USB/portal_of_flipper/README.md delete mode 100644 applications/USB/portal_of_flipper/manifest.yml delete mode 100644 applications/USB/usb_ccb/README.md delete mode 100644 applications/USB/usb_ccb/manifest.yml delete mode 100644 applications/USB/usb_hid_autofire/README.md delete mode 100644 applications/USB/usb_hid_autofire/manifest.yml delete mode 100644 applications/USB/xinput_controller/README.md delete mode 100644 applications/USB/xinput_controller/manifest.yml delete mode 100644 applications/iButton/.gitkeep delete mode 100644 applications/iButton/fuzzer_ibtn/README.md delete mode 100644 applications/iButton/fuzzer_ibtn/manifest.yml delete mode 100644 applications/iButton/ibutton_converter/manifest.yml delete mode 100644 documentation/Contributing.md delete mode 100644 documentation/Manifest.md delete mode 100644 documentation/manifest-fields.png delete mode 100644 example/manifest.yml delete mode 100644 tools/build.py delete mode 100644 tools/bundle.py delete mode 100644 tools/flipp_catalog/__init__.py delete mode 100644 tools/flipp_catalog/manifest.py delete mode 100644 tools/flipp_catalog/markdown_filter.py delete mode 100644 tools/requirements.txt delete mode 100644 tools/test_markdown_sanitizer.py delete mode 100644 tools/widget.py diff --git a/.github/.ARCHIVARIUS_URL b/.github/.ARCHIVARIUS_URL deleted file mode 100644 index 33b53077..00000000 --- a/.github/.ARCHIVARIUS_URL +++ /dev/null @@ -1 +0,0 @@ -https://catalog.flipperzero.one diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 2705f859..00000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,22 +0,0 @@ -# Application Submission - -- [ Describe your application here - its features or what has changed since the last version ] - - -# Extra Requirements - -- [ Describe if your application requires any extra hardware or software ] - - -# Author Checklist (Fill this out) - -- [ ] I've read the [contribution guidelines](../blob/HEAD/documentation/Contributing.md) and my PR follows them -- [ ] I own the code I'm submitting or have code owner's permission to submit it -- [ ] I [have validated](../blob/HEAD/documentation/Contributing.md#validating-manifest) the manifest file(s) with `python3 tools/bundle.py --nolint applications/CATEGORY/APPID/manifest.yml bundle.zip` - - -# Reviewer Checklist (Don't fill this out) - -- [ ] Bundle is valid -- [ ] There are no obvious issues with the source code -- [ ] I've ran this application and verified its functionality diff --git a/.github/WIDGET_TEMPLATE.md b/.github/WIDGET_TEMPLATE.md deleted file mode 100644 index 4105d4e3..00000000 --- a/.github/WIDGET_TEMPLATE.md +++ /dev/null @@ -1 +0,0 @@ -## Status diff --git a/.github/actions/bundle/action.yml b/.github/actions/bundle/action.yml deleted file mode 100644 index 91f6de9a..00000000 --- a/.github/actions/bundle/action.yml +++ /dev/null @@ -1,106 +0,0 @@ -name: "Gather Flipper Application Bundle" -author: "hedger" -description: "Github Action that bundles your FZ app" -inputs: - path: - description: "Path to bundle YML manifest" - required: true - skip-lint: - description: "Skip lint checks" - required: false - default: "false" - skip-build: - description: "Skip build step" - required: false - default: "false" - skip-source-code: - description: "Skip source code" - required: false - default: "false" - sdk-channel: - description: "SDK channel" - required: false - default: "release" - json-manifest: - description: "Output bundle info as JSON to file name" - required: false - default: "" - build-artifacts-zip: - description: "Build artifacts zip" - required: false - default: "" - -outputs: - bundle-path: - description: "Path to bundle zip" - value: ${{ steps.bundle.outputs.bundle-path }} - artifacts-path: - description: "Path to build artifacts zip" - value: ${{ steps.bundle-args.outputs.artifacts-path }} -runs: - using: "composite" - steps: - - name: Set paths - shell: bash - run: > - echo "::add-matcher::${{ github.workspace }}/.github/problem-matcher.json" ; - if [ -z ${{ inputs.path }} ]; then - echo "YML_PATH=$GITHUB_WORKSPACE" >> $GITHUB_ENV ; - else - echo "YML_PATH=$GITHUB_WORKSPACE/${{ inputs.path }}" >> $GITHUB_ENV ; - fi ; - mkdir -p ${{ runner.temp }} ; - echo "BUNDLE_PATH=${{ runner.temp }}/bundle.zip" >> $GITHUB_ENV ; - echo "ARTIFACT_PATH=${{ runner.temp }}/artifacts.zip" >> $GITHUB_ENV ; - echo "CATALOG_ROOT_PATH=`realpath ${{ github.action_path }}/../../../`" >> $GITHUB_ENV ; - - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: '3.11' - cache: 'pip' - - - name: Setup Python requirements - shell: bash - run: > - python3 -m pip install -r ${{ env.CATALOG_ROOT_PATH }}/tools/requirements.txt - - - name: Setup ufbt - uses: flipperdevices/flipperzero-ufbt-action@v0.1 - id: setup-ufbt - with: - task: setup - skip-setup: true - sdk-channel: ${{ inputs.sdk-channel }} - - - name: Setup build env - id: bundle-args - shell: bash - run: > - BUNDLE_FLAGS="" ; - if [ ${{ inputs.skip-lint }} != 'false' ]; then - BUNDLE_FLAGS="--nolint" ; - fi ; - if [ ${{ inputs.skip-build }} != 'false' ]; then - BUNDLE_FLAGS="$BUNDLE_FLAGS --nobuild" ; - fi ; - if [ ${{ inputs.skip-source-code }} != 'false' ]; then - BUNDLE_FLAGS="$BUNDLE_FLAGS --nosourcecode" ; - fi ; - if [ ${{ inputs.json-manifest }} != '' ]; then - BUNDLE_FLAGS="$BUNDLE_FLAGS --json-manifest ${{ inputs.json-manifest }}" ; - fi ; - if [ ${{ inputs.build-artifacts-zip }} != '' ]; then - BUNDLE_FLAGS="$BUNDLE_FLAGS --artifacts ${{ env.ARTIFACT_PATH }}" ; - echo "artifacts-path=${{ env.ARTIFACT_PATH }}" >> $GITHUB_OUTPUT ; - fi ; - echo "args=$BUNDLE_FLAGS" >> $GITHUB_OUTPUT ; - - - name: Build bundle - id: bundle - shell: bash - run: > - python3 ${{ env.CATALOG_ROOT_PATH }}/tools/bundle.py \ - ${{ steps.bundle-args.outputs.args }} \ - ${{ env.YML_PATH }} ${{ env.BUNDLE_PATH }} ; - echo "bundle-path=${{ env.BUNDLE_PATH }}" >> $GITHUB_OUTPUT ; diff --git a/.github/problem-matcher.json b/.github/problem-matcher.json deleted file mode 100644 index 5275d95a..00000000 --- a/.github/problem-matcher.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "problemMatcher": [ - { - "owner": "catalog-bundler-w", - "severity": "warning", - "pattern": [ - { - "regexp": "^\\d+:\\d+:\\d+\\.\\d+ \\[W\\] (.*)$", - "message": 1 - } - ] - }, - { - "owner": "catalog-bundler-e", - "severity": "error", - "pattern": [ - { - "regexp": "^\\d+:\\d+:\\d+\\.\\d+ \\[E\\] (.*)$", - "message": 1 - } - ] - } - - ] -} \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 99f9f70c..00000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,65 +0,0 @@ -name: Build -run-name: Build ${{ inputs.application_name }} ${{ inputs.application_version }} for ${{ inputs.target }}@${{ inputs.branch }} - -on: - workflow_dispatch: - inputs: - application_name: - description: "Application name" - required: false - default: Unknown - application_version: - description: "Application version" - required: false - default: Unknown - bundle_url: - description: "Application bundle URL" - required: true - upload_url: - description: "Build results submit URL" - required: true - branch: - description: "SDK branch to use" - required: true - target: - description: "SDK hardware target to use" - required: true - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup environment - id: env-setup - run: | - ARCHIVARIUS_URL=$( < .github/.ARCHIVARIUS_URL ) ; - echo "ARCHIVARIUS_URL=${ARCHIVARIUS_URL}" >> $GITHUB_ENV ; - echo "::add-matcher::${{ github.workspace }}/.github/problem-matcher.json" ; - - - name: Install ufbt - uses: flipperdevices/flipperzero-ufbt-action@v0.1 - id: ufbt - with: - task: setup - sdk-branch: ${{ inputs.branch }} - sdk-hw-target: ${{ inputs.target }} - - - name: Setup Python requirements - working-directory: ./tools - shell: bash - run: > - python3 -m pip install -r requirements.txt - - - name: Build source code and report results - shell: bash - run: > - python3 ${{ github.workspace }}/tools/build.py \ - --api $( < .github/.ARCHIVARIUS_URL ) \ - --bundle-path ${{ inputs.bundle_url }} \ - --upload-path ${{ inputs.upload_url }} \ - --token ${{ secrets.FAST_AUTH_TOKEN }} \ - --gh-run-id ${{ github.run_id }} \ - --gh-summary $GITHUB_STEP_SUMMARY ; diff --git a/.github/workflows/bundle.yml b/.github/workflows/bundle.yml deleted file mode 100644 index 3661d252..00000000 --- a/.github/workflows/bundle.yml +++ /dev/null @@ -1,268 +0,0 @@ -name: Process manifests - -on: - push: - branches: - - main - pull_request: - -jobs: - process-manifests: - name: Get changes - runs-on: ubuntu-latest - outputs: - changed-manifests: ${{ steps.set-json-output.outputs.all-changed-files }} - deleted-manifests: ${{ steps.set-json-output.outputs.deleted-files }} - checks-only: ${{ steps.set-json-output.outputs.checks-only }} - - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 2 - - - name: Get updated manifests - id: changed-files - uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c - with: - files: | - applications/**/manifest.yml - files_ignore: | - .github - example - - - name: JSONify changes - id: set-json-output - run: | - if [ "${{ github.event_name }}" != "push" ] ; then - echo checks-only=true >> $GITHUB_OUTPUT ; - fi ; - echo all-changed-files=$(echo "${{ steps.changed-files.outputs.all_changed_files }}" | jq -R -c 'split(" ")' ) >> $GITHUB_OUTPUT ; - echo deleted-files=$(echo "${{ steps.changed-files.outputs.deleted_files }}" | jq -R -c 'split(" ")' ) >> $GITHUB_OUTPUT ; - - - name: Generate diff comment data - id: diff-comment - if: github.event_name == 'pull_request' && steps.changed-files.outputs.all_changed_files != '' - run: | - echo "### Application updates" >> diff.md ; - for manifest in ${{ steps.changed-files.outputs.all_changed_files }} ; do - SHA_DIFF=$( git diff --unified=0 ${{ github.event.pull_request.base.sha }} ${{ github.sha }} -- $manifest | grep "commit_sha: " ) ; - OLD_SHA_VALUE=$( echo "$SHA_DIFF" | grep -E '^\-' | sed "s/.*: //" | xargs ) ; - NEW_SHA_VALUE=$( echo "$SHA_DIFF" | grep -E '^\+' | sed "s/.*: //" | xargs ) ; - REPO_URL=$( grep " origin: " $manifest | sed "s/.*origin: \(.*\)/\1/" | sed "s/\(.*\).git$/\1/" ) ; - APP_ID=$(basename $( dirname $manifest ) ) ; - if [ "z$OLD_SHA_VALUE" == "z" ] ; then - echo "New app \`$APP_ID\`: [repo]($REPO_URL/tree/$NEW_SHA_VALUE)" >> diff.md ; - else - echo "Updated app \`$APP_ID\`: [changes]($REPO_URL/compare/$OLD_SHA_VALUE...$NEW_SHA_VALUE)" >> diff.md ; - fi ; - done ; - echo 'repo-diff-md-file=diff.md' >> $GITHUB_OUTPUT ; - echo 'repo-diff<> $GITHUB_OUTPUT ; - cat diff.md >> $GITHUB_OUTPUT ; - echo 'REPO-DIFF-DATA-EOF' >> $GITHUB_OUTPUT ; - - - name: Output diff to job status - if: steps.diff-comment.outputs.repo-diff != '' - run: | - cat "${{ steps.diff-comment.outputs.repo-diff-md-file }}" >> $GITHUB_STEP_SUMMARY ; - - - name: Find diff comment - uses: peter-evans/find-comment@v3 - id: find-comment - if: steps.diff-comment.outputs.repo-diff != '' && !github.event.pull_request.head.repo.fork - with: - issue-number: ${{ github.event.pull_request.number }} - comment-author: 'github-actions[bot]' - body-includes: '### Application updates' - - - name: Create or update diff comment - if: steps.diff-comment.outputs.repo-diff != '' && !github.event.pull_request.head.repo.fork - uses: peter-evans/create-or-update-comment@v4 - with: - issue-number: ${{ github.event.pull_request.number }} - comment-id: ${{ steps.find-comment.outputs.comment-id }} - body: ${{ steps.diff-comment.outputs.repo-diff }} - edit-mode: replace - - - build-package: - name: Build package - needs: process-manifests - if: needs.process-manifests.outputs.changed-manifests != '[]' - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - manifest: ${{ fromJson(needs.process-manifests.outputs.changed-manifests) }} - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Set up source code flag - id: source-code - run: | - ARCHIVARIUS_URL=$( < .github/.ARCHIVARIUS_URL ) ; - echo "ARCHIVARIUS_URL=${ARCHIVARIUS_URL}" >> $GITHUB_ENV ; - if [ "z{{ vars.CATALOG_STAGING }}" != "z" ] ; then - echo "BUNDLE_ALLOW_VERSION_MISMATCH=1" >> $GITHUB_ENV ; - fi ; - - - name: Bundle application - id: app-bundle - continue-on-error: true - uses: ./.github/actions/bundle - with: - path: ${{ matrix.manifest }} - skip-source-code: ${{ needs.process-manifests.outputs.checks-only }} - json-manifest: bundle.json - build-artifacts-zip: true - # Uncomment to submit bundles with broken code - # skip-build: true - skip-lint: true - - - name: Retry build with RC SDK - id: app-bundle-rc - if: steps.app-bundle.outcome == 'failure' - uses: ./.github/actions/bundle - with: - path: ${{ matrix.manifest }} - skip-source-code: ${{ needs.process-manifests.outputs.checks-only }} - sdk-channel: rc - json-manifest: bundle.json - build-artifacts-zip: true - # Uncomment to submit bundles with broken code - # skip-build: true - skip-lint: true - - - name: Get succesful build output - id: get-bundle-path - if: (steps.app-bundle.outputs.bundle-path != '' || steps.app-bundle-rc.outputs.bundle-path != '') - run: | - if [ -f "${{ steps.app-bundle.outputs.bundle-path }}" ] ; then - echo "path=${{ steps.app-bundle.outputs.bundle-path }}" >> $GITHUB_OUTPUT ; - echo "artifacts-path=${{ steps.app-bundle.outputs.artifacts-path }}" >> $GITHUB_OUTPUT ; - elif [ -f $GITHUB_OUTPUT ] ; then - echo "path=${{ steps.app-bundle-rc.outputs.bundle-path }}" >> $GITHUB_OUTPUT ; - echo "artifacts-path=${{ steps.app-bundle-rc.outputs.artifacts-path }}" >> $GITHUB_OUTPUT ; - else - echo Failed to build application bundle! ; - exit 1 ; - fi - APPID=$( jq -r '.id' bundle.json ) ; - APPVERSION=$( jq -r '.version' bundle.json ) ; - echo "app-id=$APPID" >> $GITHUB_OUTPUT ; - echo "app-version=$APPVERSION" >> $GITHUB_OUTPUT ; - - - name: Submit application bundle - id: bundle-submit - if: needs.process-manifests.outputs.checks-only != 'true' - run: | - curl --fail-with-body \ - -H "Authorization: Bearer ${{ secrets.FAST_AUTH_TOKEN }}" \ - -F "bundle=@${{ steps.get-bundle-path.outputs.path }}" \ - ${{ env.ARCHIVARIUS_URL }}/api/v0/application/version/bundle - - - name: Check if version exists - if: needs.process-manifests.outputs.checks-only == 'true' && steps.app-bundle.outputs.bundle-path != '' - run: | - VER_HTTP_CODE=$( curl -sw '%{http_code}' -o /dev/null \ - "${{ env.ARCHIVARIUS_URL }}/api/v0/application/${{ steps.get-bundle-path.outputs.app-id }}/versions?version=${{ steps.get-bundle-path.outputs.app-version }}" ) ; - if [ "$VER_HTTP_CODE" != "404" ] ; then - echo "Version ${{ steps.get-bundle-path.outputs.app-version }} for ${{ steps.get-bundle-path.outputs.app-id }} already exists (or server failed, code ${VER_HTTP_CODE})!" ; - exit 1 ; - fi - - - name: Create bundle artifact - if: needs.process-manifests.outputs.checks-only == 'true' && steps.get-bundle-path.outputs.path != '' - uses: actions/upload-artifact@v4 - with: - name: "${{ steps.get-bundle-path.outputs.app-id }}-${{ steps.get-bundle-path.outputs.app-version }}-bundle" - path: ${{ steps.get-bundle-path.outputs.path }} - - - name: Create build artifacts artifact - if: needs.process-manifests.outputs.checks-only == 'true' && steps.get-bundle-path.outputs.artifacts-path != '' - uses: actions/upload-artifact@v4 - with: - name: "${{ steps.get-bundle-path.outputs.app-id }}-${{ steps.get-bundle-path.outputs.app-version }}-build-artifacts" - path: ${{ steps.get-bundle-path.outputs.artifacts-path }} - - - delete-app: - name: Delete app - needs: process-manifests - if: needs.process-manifests.outputs.deleted-manifests != '[]' - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - manifest: ${{ fromJson(needs.process-manifests.outputs.deleted-manifests) }} - - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Set up source code flag - id: source-code - run: | - ARCHIVARIUS_URL=$( < .github/.ARCHIVARIUS_URL ) ; - echo "ARCHIVARIUS_URL=${ARCHIVARIUS_URL}" >> $GITHUB_ENV ; - if [ "z{{ vars.CATALOG_STAGING }}" != "z" ] ; then - echo "BUNDLE_ALLOW_VERSION_MISMATCH=1" >> $GITHUB_ENV ; - fi - - - name: Extract app id from path - id: get-app-id - run: | - echo "app-id=$( basename $( dirname ${{ matrix.manifest }} ) )" >> $GITHUB_OUTPUT ; - - - name: Check if app exists on backend - id: check-app-exists - run: | - curl --fail-with-body \ - ${{ env.ARCHIVARIUS_URL }}/api/v0/application/${{ steps.get-app-id.outputs.app-id }} - - - name: Delete app from backend - id: delete-manifest - if: steps.check-app-exists.outputs.exitcode == 0 && needs.process-manifests.outputs.checks-only != 'true' - run: | - curl --fail-with-body -X DELETE \ - -H "Authorization: Bearer ${{ secrets.FAST_AUTH_TOKEN }}" \ - ${{ env.ARCHIVARIUS_URL }}/api/v0/application/${{ steps.get-app-id.outputs.app-id }} - - - self-test: - name: Run self-test - needs: process-manifests - if: needs.process-manifests.outputs.deleted-manifests == '[]' && needs.process-manifests.outputs.changed-manifests == '[]' - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Run self-test - id: self-test - uses: ./.github/actions/bundle - with: - path: example/manifest.yml - - - name: Create bundle artifact - uses: actions/upload-artifact@v4 - with: - name: "test-bundle" - path: ${{ steps.self-test.outputs.bundle-path }} - - - report-status: - name: Report status - needs: [ self-test, build-package, delete-app ] - if: always() && !contains(needs.*.result, 'failure') - runs-on: ubuntu-latest - steps: - - run: echo "All good ✨" ; diff --git a/.github/workflows/widget.yml b/.github/workflows/widget.yml deleted file mode 100644 index 42878e97..00000000 --- a/.github/workflows/widget.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: Widget -run-name: Create widgets for ${{ inputs.application-id }} - -on: - workflow_dispatch: - inputs: - application-id: - description: "Application id" - required: true - application-category: - description: "Application category" - required: true - -jobs: - build_statuses: - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setting envs - run: | - ARCHIVARIUS_URL=$(< .github/.ARCHIVARIUS_URL) ; - echo "ARCHIVARIUS_URL=${ARCHIVARIUS_URL}" >> $GITHUB_ENV ; - - - name: "Check README existence" - id: check_files - uses: andstor/file-existence-action@v3 - with: - files: 'applications/${{ inputs.application-category }}/${{ inputs.application-id }}/README.md' - - - name: Generate README widget file - if: steps.check_files.outputs.files_exists == 'false' - id: bundle - shell: bash - run: > - python3 ./tools/widget.py \ - "${{ inputs.application-id }}" "${{ inputs.application-category }}" ; - - - name: Commit README widget file - if: steps.check_files.outputs.files_exists == 'false' - uses: EndBug/add-and-commit@v9 - with: - pull: '--rebase --autostash' - add: 'applications/${{ inputs.application-category }}/${{ inputs.application-id }}/README.md' - author_name: Git Action diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 6f097a96..00000000 --- a/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -/venv -.idea -__pycache__ -.DS_Store -*.zip -/test.bat diff --git a/ReadMe.md b/ReadMe.md deleted file mode 100644 index 934527c7..00000000 --- a/ReadMe.md +++ /dev/null @@ -1,25 +0,0 @@ -# Flipper Apps Catalog -This is a public repository for community developed apps for Flipper Zero. - -This repository hosts app manifests that contain app metadata and build information. This repository doesn't host app source code. - -## How to install an app -Apps from this repository are automatically built and archived to Flipper Application Mirror. Use Flipper companion apps to search and install apps from this repository: - - iOS: [download from App Store](https://apps.apple.com/app/flipper-mobile-app/id1534655259) - - Android: [download from Google Play](https://play.google.com/store/apps/details?id=com.flipperdevices.app) - - Web: [Flipper Lab](https://lab.flipper.net/apps) _(chromium-based browser required)_ - -## How to contribute an app - -Read [Contribution Guide](documentation/Contributing.md) to learn how to add and update your app to the Apps Catalog. - -## How to report an issue -If you have found a bug in an app or want to suggest an improvement, please contact the app's developer using the contact information provided in the app manifest, or by opening an issue in the app's source code repository. - -If you want to report abuse or violation of your rights, please open an issue in this repo with details. - -## Repository structure - -- `applications` - Apps Catalog manifests -- `documentation` - Apps Catalog documentation, including notes on the build process and architecture -- `tools` - CI/CD tools for workflow automation: verifying app manifest and its code, creating app code bundles diff --git a/applications/Bluetooth/.gitkeep b/applications/Bluetooth/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/applications/Bluetooth/anki_remote/manifest.yml b/applications/Bluetooth/anki_remote/manifest.yml deleted file mode 100644 index ff22ad06..00000000 --- a/applications/Bluetooth/anki_remote/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Blue5GD/Anki-Remote - commit_sha: 0c74d5fbd824204fb0266aa030e683a452b32ee6 -description: "@README.md" -changelog: "@./docs/CHANGELOG.md" -screenshots: - - "screenshots/ss0.png" - - "screenshots/ss1.png" - - "screenshots/ss2.png" - - "screenshots/ss3.png" - - "screenshots/ss4.png" diff --git a/applications/Bluetooth/bt_trigger/README.md b/applications/Bluetooth/bt_trigger/README.md deleted file mode 100644 index 66395f31..00000000 --- a/applications/Bluetooth/bt_trigger/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![bt_trigger](https://catalog.flipperzero.one/application/bt_trigger/widget)](https://catalog.flipperzero.one/application/bt_trigger/page) \ No newline at end of file diff --git a/applications/Bluetooth/bt_trigger/manifest.yml b/applications/Bluetooth/bt_trigger/manifest.yml deleted file mode 100644 index dd5e0567..00000000 --- a/applications/Bluetooth/bt_trigger/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/bluetooth-trigger -description: "@README-catalog.md" -changelog: "v1.0 - Initial release, v1.1 - Description update, v1.2 - Various important fixes, v1.3 - Fixes for latest API, v1.4 - Sync updates and latest API support, v1.5 - Sync with latest version" -author: "@Nem0oo" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/Bluetooth/bthome/README.md b/applications/Bluetooth/bthome/README.md deleted file mode 100644 index ffa09f56..00000000 --- a/applications/Bluetooth/bthome/README.md +++ /dev/null @@ -1,5 +0,0 @@ -[![bthome](https://catalog.flipperzero.one/application/bthome/widget)](https://catalog.flipperzero.one/application/bthome/page) - -This application turns the Flipper Zero into a [BTHome](https://bthome.io) beacon, and can be used to integrate the Flipper with home automation systems that support BTHome, such as Home Assistant. - -See the [app's README](https://github.com/ghedo/flipper-playground/tree/master/bthome#readme) for more information. diff --git a/applications/Bluetooth/bthome/manifest.yml b/applications/Bluetooth/bthome/manifest.yml deleted file mode 100644 index b70c054c..00000000 --- a/applications/Bluetooth/bthome/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/ghedo/flipper-playground - commit_sha: 1c415ac282e3fbd2c19c1b6e2aa0dd7f574e8a0d - subdir: bthome -description: | - This application turns the Flipper Zero into a [BTHome](https://bthome.io) beacon, and can be used to integrate the Flipper with home automation systems that support BTHome, such as Home Assistant. - - See the [app's README](https://github.com/ghedo/flipper-playground/tree/master/bthome#readme) for more information. -changelog: "@CHANGELOG.md" -screenshots: - - screenshots/bthome_app.png diff --git a/applications/Bluetooth/findmy/README.md b/applications/Bluetooth/findmy/README.md deleted file mode 100644 index 575de465..00000000 --- a/applications/Bluetooth/findmy/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![findmy](https://catalog.flipperzero.one/application/findmy/widget)](https://catalog.flipperzero.one/application/findmy/page) \ No newline at end of file diff --git a/applications/Bluetooth/findmy/manifest.yml b/applications/Bluetooth/findmy/manifest.yml deleted file mode 100644 index 31e68458..00000000 --- a/applications/Bluetooth/findmy/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/MatthewKuKanich/FindMyFlipper.git - commit_sha: 8bb3c3ee71cb2cb82a9625bb2cfd36701004e803 - subdir: FindMyFlipper -description: "FindMyFlipper, use your FlipperZero as an Airtag! Track on Apple, Samsung, and Tile find networks. Instructions are on the GitHub page: https://github.com/MatthewKuKanich/FindMyFlipper" -changelog: "v3.0 - MAC Toggle on Menu Screen, bug fixes" -author: "@MatthewKuKanich" -screenshots: - - './screenshots/1.png' - - './screenshots/2.png' - - './screenshots/3.png' diff --git a/applications/Bluetooth/hid_ble/README.md b/applications/Bluetooth/hid_ble/README.md deleted file mode 100644 index 7ef3dc24..00000000 --- a/applications/Bluetooth/hid_ble/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# HID App - -This is a standalone version of the HID app Momentum. Thankfully, that project is GPL, so this one is as well. - -## Functionality - -* Keynote - Remote for presentations -* Keynote Vertical - Alternate remote for presentations -* Keyboard - A functional keyboard, including modifier keys -* Numpad - Number pad -* Media - Media controls -* Apple Music macOS - Alternate music controls -* Movie - Media controls for watching a movie -* Mouse - Move the cursor and send clicks -* TikTok / YT Shorts - Specialized controls for short-form videos -* Mouse Clicker - Repeatedly click the mouse after a delay -* Mouse Jiggler - Moves the mouse every few seconds -* Mouse Jiggler Stealth - Moves the mouse a random direction and distance after a random time period -* PushToTalk - Controls to unmute your microphone with various services diff --git a/applications/Bluetooth/hid_ble/manifest.yml b/applications/Bluetooth/hid_ble/manifest.yml deleted file mode 100644 index f22dfd87..00000000 --- a/applications/Bluetooth/hid_ble/manifest.yml +++ /dev/null @@ -1,24 +0,0 @@ -id: hid_ble -author: Momentum Team -sourcecode: - type: git - location: - origin: https://github.com/fidian/flipper-hid-app.git - ## Put the full commit SHA of the commit with the app's code you want to submit - commit_sha: f4a4c3e663838a2f1363f638b3366d4e03b78d79 -description: "@README.md" -changelog: "@CHANGELOG.md" -screenshots: - - screenshots/main-menu.png - - screenshots/keynote.png - - screenshots/keyboard.png - - screenshots/media.png - - screenshots/apple-music-macos.png - - screenshots/movie.png - - screenshots/mouse.png - - screenshots/tiktoc-yt-shorts.png - - screenshots/mouse-clicker.png - - screenshots/mouse-jiggler.png - - screenshots/mouse-jiggler-stealth.png - - screenshots/push-to-talk-1.png - - screenshots/push-to-talk-2.png diff --git a/applications/Bluetooth/magicband_plus_lights/manifest.yml b/applications/Bluetooth/magicband_plus_lights/manifest.yml deleted file mode 100644 index a6d0085b..00000000 --- a/applications/Bluetooth/magicband_plus_lights/manifest.yml +++ /dev/null @@ -1,10 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Haw8411/magic-band-plus-lights - commit_sha: 7ed44e43bf316bf37c10aaf8806359161ca83c98 -description: "@README.md" -changelog: "@changelog.md" -screenshots: - - Green.png - - TasteRainbow.png diff --git a/applications/Bluetooth/pc_monitor/README.md b/applications/Bluetooth/pc_monitor/README.md deleted file mode 100644 index 53b0408a..00000000 --- a/applications/Bluetooth/pc_monitor/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![pc_monitor](https://catalog.flipperzero.one/application/pc_monitor/widget)](https://catalog.flipperzero.one/application/pc_monitor/page) \ No newline at end of file diff --git a/applications/Bluetooth/pc_monitor/manifest.yml b/applications/Bluetooth/pc_monitor/manifest.yml deleted file mode 100644 index 327e81b2..00000000 --- a/applications/Bluetooth/pc_monitor/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/TheSainEyereg/flipper-pc-monitor.git - commit_sha: ff4cf57e627f7924b8ad5da6cef6e681f2ea7669 -description: "@README.md" -changelog: "@CHANGELOG.md" -author: "Olejka" -screenshots: - - "screenshots/0.png" - - "screenshots/1.png" - - "screenshots/2.png" diff --git a/applications/GPIO/.gitkeep b/applications/GPIO/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/applications/GPIO/24cxxprog/manifest.yml b/applications/GPIO/24cxxprog/manifest.yml deleted file mode 100644 index f91a7b17..00000000 --- a/applications/GPIO/24cxxprog/manifest.yml +++ /dev/null @@ -1,23 +0,0 @@ -id: "24cxxprog" -name: "24cxxprog" -author: "@Dr.Mosfet" -category: "GPIO" -version: "2.0" -targets: - - "all" -sourcecode: - type: git - location: - origin: "https://github.com/kamylwnb/24cxxprog" - commit_sha: "a06410404a66cb99b4839abfc9b9f31246e3f98d" -short_description: "EEPROM 24Cxx programmer via I2C" -description: | - A comprehensive EEPROM programmer application for the Flipper Zero - that interfaces with 24Cxx series I2C memory chips. Supports read, - write, erase and dump/restore operations with a user-friendly - menu interface for all 24C series memory sizes. -changelog: "CHANGELOG.md" -screenshots: - - screenshots/1.png - - screenshots/2.png - - screenshots/3.png diff --git a/applications/GPIO/401_digilab/manifest.yml b/applications/GPIO/401_digilab/manifest.yml deleted file mode 100644 index b0cab29d..00000000 --- a/applications/GPIO/401_digilab/manifest.yml +++ /dev/null @@ -1,28 +0,0 @@ -## DigiLab - by Tixlegeek, brought to you by LAB401 - -sourcecode: - type: git - location: - ## Specify the git URL of your repository - origin: https://github.com/lab-401/fzDigiLab - ## Put the full commit SHA of the commit with the app's code you want to submit - commit_sha: 0b48d832849d74b4e75cfcfca0ddf13a877b5b95 - ## (Optional) If your app is located in a subdirectory of the repository, specify it here - subdir: ./401DigiLabApp -## If application.fam contains 'fap_description', it will be used as a short description -short_description: Companion app for the Lab401 DigiLab -## For 'description' and 'changelog', you can use limited markdown syntax -## You can also specify a file from your app's repository as a source with @ -description: | - Companion app for Lab401's Digilab accessory. The Digilab is hardware module that allows you to explore electronic circuits with a strong emphasis on sensory feedback. It allows you to quickly probe and understand signals, and get a feel about what it looks like. - Requires a hardware component, which can be purchased at Lab401.com - Built with <3 by Lab401 and tixlegeek. -changelog: "@CHANGELOG.md" -## Unmodified screenshots from qFlipper -screenshots: - - screenshots/sc01.png - - screenshots/sc02.png - - screenshots/sc03.png - - screenshots/sc04.png - - screenshots/sc05.png - - screenshots/sc06.png diff --git a/applications/GPIO/401_light_msg/README.md b/applications/GPIO/401_light_msg/README.md deleted file mode 100644 index 77ada0b4..00000000 --- a/applications/GPIO/401_light_msg/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![401_light_msg](https://catalog.flipperzero.one/application/401_light_msg/widget)](https://catalog.flipperzero.one/application/401_light_msg/page) \ No newline at end of file diff --git a/applications/GPIO/401_light_msg/manifest.yml b/applications/GPIO/401_light_msg/manifest.yml deleted file mode 100644 index 444ecaec..00000000 --- a/applications/GPIO/401_light_msg/manifest.yml +++ /dev/null @@ -1,16 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/lab-401/fzLightMessenger.git - commit_sha: 469117c22037c15c57234ed771760edd2ae1b96b - subdir: ./401lightMessengerApp -short_description: Companion app for the Lab401 Light Messenger -description: "@DESCRIPTION.md" -changelog: "@CHANGELOG.md" -## Unmodified screenshots from qFlipper -screenshots: - - screenshots/sc01.png - - screenshots/sc02.png - - screenshots/sc03.png - - screenshots/sc04.png - - screenshots/sc05.png diff --git a/applications/GPIO/air_mouse/README.md b/applications/GPIO/air_mouse/README.md deleted file mode 100644 index 21b66291..00000000 --- a/applications/GPIO/air_mouse/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![air_mouse](https://catalog.flipperzero.one/application/air_mouse/widget)](https://catalog.flipperzero.one/application/air_mouse/page) \ No newline at end of file diff --git a/applications/GPIO/air_mouse/manifest.yml b/applications/GPIO/air_mouse/manifest.yml deleted file mode 100644 index 7ff9058c..00000000 --- a/applications/GPIO/air_mouse/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/ginkage/FlippAirMouse.git - commit_sha: 49269430dfad1743e6965409f3b360852c16ccaf -short_description: Flipper Air Mouse using BMI160 module -description: "@DESCRIPTION.md" -changelog: "@CHANGELOG.md" -author: "@ginkage" -screenshots: - - screenshot1.png - - screenshot2.png - - screenshot3.png diff --git a/applications/GPIO/airmon/README.md b/applications/GPIO/airmon/README.md deleted file mode 100644 index d476b826..00000000 --- a/applications/GPIO/airmon/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![airmon](https://catalog.flipperzero.one/application/airmon/widget)](https://catalog.flipperzero.one/application/airmon/page) \ No newline at end of file diff --git a/applications/GPIO/airmon/manifest.yml b/applications/GPIO/airmon/manifest.yml deleted file mode 100644 index 350353b6..00000000 --- a/applications/GPIO/airmon/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/airmon -description: "Plantower PMSx003 sensor reader" -changelog: "v1.0 - Initial release, v1.1 - Various fixes, v1.2 - Fixes for latest API, v1.3 - Sync updates and latest API support, v1.4 - Sync with latest version" -author: "3cky" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/GPIO/avr_isp/README.md b/applications/GPIO/avr_isp/README.md deleted file mode 100644 index 1198e309..00000000 --- a/applications/GPIO/avr_isp/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![avr_isp](https://catalog.flipperzero.one/application/avr_isp/widget)](https://catalog.flipperzero.one/application/avr_isp/page) \ No newline at end of file diff --git a/applications/GPIO/avr_isp/manifest.yml b/applications/GPIO/avr_isp/manifest.yml deleted file mode 100644 index 490c9863..00000000 --- a/applications/GPIO/avr_isp/manifest.yml +++ /dev/null @@ -1,16 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/flipperdevices/flipperzero-good-faps.git - commit_sha: a9c6700663c0eb8b9bed884eff5545c4ab818358 - subdir: avr_isp_programmer -description: "@.catalog/README.md" -changelog: "@.catalog/changelog.md" -author: "@Skorpionm" -screenshots: - - ".catalog/screenshots/1.png" - - ".catalog/screenshots/2.png" - - ".catalog/screenshots/3.png" - - ".catalog/screenshots/4.png" - - ".catalog/screenshots/5.png" - diff --git a/applications/GPIO/bme680_flipper_zero/manifest.yml b/applications/GPIO/bme680_flipper_zero/manifest.yml deleted file mode 100644 index cb8e8e96..00000000 --- a/applications/GPIO/bme680_flipper_zero/manifest.yml +++ /dev/null @@ -1,25 +0,0 @@ -id: "bme680_flipper_zero" -name: "BME680" -author: "@Dr.Mosfet" -category: "GPIO" -version: "1.2" -targets: - - "all" -sourcecode: - type: git - location: - origin: https://github.com/kamylwnb/bme680_flipper_zero - commit_sha: 0c62a0cf7d6f5f0649f02f63f6618dfd8cbf8565 -short_description: "BME680 sensor via I2C" -description: | - This is a comprehensive environmental monitoring application - designed for the Flipper Zero that interfaces with the - high-precision BME680 sensor via I2C. The BME680 is a - sophisticated environmental sensor capable of measuring - temperature, humidity, barometric pressure, and air quality (gas resistance). -changelog: "docs/CHANGELOG.md" -screenshots: - - screenshots/1.png - - screenshots/2.png - - screenshots/3.png - diff --git a/applications/GPIO/camera_suite/README.md b/applications/GPIO/camera_suite/README.md deleted file mode 100644 index e7565c92..00000000 --- a/applications/GPIO/camera_suite/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![camera_suite](https://catalog.flipperzero.one/application/camera_suite/widget)](https://catalog.flipperzero.one/application/camera_suite/page) diff --git a/applications/GPIO/camera_suite/manifest.yml b/applications/GPIO/camera_suite/manifest.yml deleted file mode 100644 index bfdc4599..00000000 --- a/applications/GPIO/camera_suite/manifest.yml +++ /dev/null @@ -1,22 +0,0 @@ -author: "@CodyTolene @Z4urce @leedave @rnadyrshin" -category: "GPIO" -changelog: "@./docs/CHANGELOG.md" -description: "@./docs/README.md" -icon: "icons/camera_suite.png" -id: "camera_suite" -name: "[ESP32] Camera Suite" -screenshots: - - "screenshots/camera.png" - - "screenshots/camera_preview.png" - - "screenshots/guide.png" - - "screenshots/guide_connect.png" - - "screenshots/main_menu.png" - - "screenshots/settings_app.png" - - "screenshots/settings_camera.png" -short_description: "A camera suite application for the Flipper Zero ESP32-CAM module." -sourcecode: - location: - commit_sha: c17777396da92cad1e0ece372b6c3934e2937e91 - origin: https://github.com/CodyTolene/Flipper-Zero-Camera-Suite.git - subdir: fap - type: git diff --git a/applications/GPIO/canfdhs/README.md b/applications/GPIO/canfdhs/README.md deleted file mode 100644 index 968ef6ac..00000000 --- a/applications/GPIO/canfdhs/README.md +++ /dev/null @@ -1,97 +0,0 @@ -# Flipper Zero CAN FD HS SW - - -This software implements an USB to CAN bridge compatible with **Linux [can-utils](https://github.com/linux-can/can-utils) and slcan driver.**
-This software application is designed to run on flipper zero device and needs SERMA CAN FD board to be plugged in GPIOs ports available [here](https://github.com/serma-safety-security/flipper-zero-can-fd-hs-module).
-![Flipper zero CAN FD](./Documentation/images/main_logo.png "Flipper zero CAN FD") - -## Usage - -When entering the application (by selecting can-fd-hs) from main menu or by selecting Apps/USB-CAN, a list appears with 3 choices which represent the 3 modes of the application detailled in next sections : -- **USB-CAN Bridge :** This is the **main mode** which is used as a bridge between can-utils and a CAN device under test. -- TEST USB LOOPBACK : This mode is used to test connectivity between host computer and flipper zero. -- CAN TEST : This mode is used to test CAN connectivity. This send "CANALIVE" through CAN. - -### USB-CAN Bridge - -This mode have to be entered before issuing any configuration command. -Then you can : -1. Create a CAN network interface through USB Virtual com port (VCP) :`sudo slcand -s ttyACM can`. -2. enable your created network interface `sudo ifconfig can up`. -3. operate normally your can interface by using `cansend can #` and `candump can` commands. - -Please refer to [can-utils](https://github.com/linux-can/can-utils) for more details.
-If issues are encountered, you can get more informations by connecting directly to vcp with tool like putty : -- serial mode -- 8 data bits -- no parity -- no hardware control flow - -You can see the following screenshot for more informations: - -![debug mode](./Documentation/images/debug.png "debug mode") - -**This mode can also be used to configure connection in flexible datarate ("S9" command).**
- -> **NB1 : beware of command line termination. It must be a carriage return '\r'. For more convenience newline '\n' characters located after carriage returns are ignored.**
-> **NB2 : for compatibility reason (with can-utils) newline character is not appended after CAN RX frames.As a consequence display of these frames is impacted. To avoid this send "d" on VCP to enter in debug mode.**
-> **NB3 : beware of usb cdc buffer length. Max size is 64. So command number that can be sent in one frame is limited.**
- -### TEST USB LOOPBACK - -This mode is used to test VCP (USB cdc) connectivity. To use this mode, you have to : -1. connect to the VCP with any VCP tool like putty : - - serial mode - - 8 data bits - - no parity - - no hardware control flow -2. Once the connection is established message USB loopback is displayed, the user can test connection by sending characters on serial line and checking the content sent is sent back on serial line by the flipper device. - -![USB loopback](./Documentation/images/usb_loopback.png "USB loopback") - -### TEST CAN - -This mode is used to test CAN connection (to verify wiring between CAN device under test and flipper zero board). -No user action is required before using this mode (except the obvious wiring step).
-The frame sent every 200 ms shall by the device shall be the following : -- **007E5TCA:43414E4C49564500** : IIIIIIII:DDDDDDDDDDDDDDDD with - - **\** the extended identifier (007E57CA = "TESTCA" in hexspeak) - - **\** the data (43414E4C49564500 = "CANLIVE" in ascii). - -![test can](./Documentation/images/testcan.JPG "test can") - -> note : You can first check Tx LED blinks and transmitted byte counter (on flipper screen) increment by 8 every 200ms to diagnose problems. - -## Development - -### documentation - -Documentation can be found [here](./Documentation/html/index.html).\ -To re-generate documentation you have to install `doxygen` before running `Documentation/generate_doc.sh [--open]` (--open is used to open documentation after the generation). - - -### architecture overview - -This application is based on: -- XTREME firmware USB-UART bridge application : It has been modified to send data on CAN (via SPI) and not on UART. -- Longan Labs [Longan_CANFD](https://github.com/Longan-Labs/Longan_CANFD) library : this is the driver for the MCP 2518 CAN transceiver. - -**More information on architecture is given in [docs](./Documentation/html/index.html) (cf. previous section).** - -Application is built as an external app using standard fbt commands. Please refer to flipper documentation for more information. - -### Test status -Applications has been tested with a MCP2515 evaluation board. As a consequence, only the following datarates are tested : -- 125 Kbaud -- 250 Kbaud -- 500 Kbaud -- 1 MBaud - -![Flipper zero CAN FD test setup](./Documentation/images/CAN_test.png "Flipper zero CAN FD test setup") - -> **Note: the flexible datarate is not tested yet.** - -### Known bugs - -Multiple exit and enters in application and its submode produce instable behaviour. - diff --git a/applications/GPIO/canfdhs/manifest.yml b/applications/GPIO/canfdhs/manifest.yml deleted file mode 100644 index c6a700bb..00000000 --- a/applications/GPIO/canfdhs/manifest.yml +++ /dev/null @@ -1,21 +0,0 @@ -## This is a sample manifest file for the Flipper Apps Catalog. -## Create one for your app in a corresponding directory in the 'applications' folder. - -sourcecode: - type: git - location: - ## Specify the git URL of your repository - origin: https://github.com/serma-safety-security/Flipper-Zero-CAN-FD-HS-SW.git - ## Put the full commit SHA of the commit with the app's code you want to submit - commit_sha: 5c050f4f825957c44e3cd54bd784b8dfec9cdcdf - ## (Optional) If your app is located in a subdirectory of the repository, specify it here - # subdir: . -## If application.fam contains 'fap_description', it will be used as a short description -short_description: This software implements an USB to CAN bridge compatible with Linux can-utils and slcan driver. -## For 'description' and 'changelog', you can use limited markdown syntax -## You can also specify a file from your app's repository as a source with @ -description: "@Documentation/README_lite.md" -changelog: "@changelog.md" -## Unmodified screenshots from qFlipper -screenshots: - - Documentation/qflipper_screenshots/Screenshot-1.png \ No newline at end of file diff --git a/applications/GPIO/co2_logger/manifest.yml b/applications/GPIO/co2_logger/manifest.yml deleted file mode 100644 index ae54652c..00000000 --- a/applications/GPIO/co2_logger/manifest.yml +++ /dev/null @@ -1,10 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/harryob2/co2_logger.git - commit_sha: 435c27ac592f96d12283328cb549fbe3670571aa -description: "@README.md" -changelog: "@CHANGELOG.md" -screenshots: - - screenshots/0.png - - screenshots/1.png diff --git a/applications/GPIO/dap_link/README.md b/applications/GPIO/dap_link/README.md deleted file mode 100644 index 3ec4c028..00000000 --- a/applications/GPIO/dap_link/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![dap_link](https://catalog.flipperzero.one/application/dap_link/widget)](https://catalog.flipperzero.one/application/dap_link/page) \ No newline at end of file diff --git a/applications/GPIO/dap_link/manifest.yml b/applications/GPIO/dap_link/manifest.yml deleted file mode 100644 index b7ede61c..00000000 --- a/applications/GPIO/dap_link/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/flipperdevices/flipperzero-good-faps.git - commit_sha: b791dea234f855155027bb46215dc60f3ddeb243 - subdir: dap_link -description: "@.catalog/README.md" -changelog: "v1.0 - Initial release, v1.1 - Various updates and fixes, v1.2 - Fixes for latest UART API, v1.3 - Removed call to deprecated SDK API" -author: "@DrZlo13" -screenshots: - - ".catalog/screenshots/1.png" - - ".catalog/screenshots/2.png" - - ".catalog/screenshots/3.png" diff --git a/applications/GPIO/esp32_wifi_marauder/README.md b/applications/GPIO/esp32_wifi_marauder/README.md deleted file mode 100644 index c676b6d4..00000000 --- a/applications/GPIO/esp32_wifi_marauder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![esp32_wifi_marauder](https://catalog.flipperzero.one/application/esp32_wifi_marauder/widget)](https://catalog.flipperzero.one/application/esp32_wifi_marauder/page) \ No newline at end of file diff --git a/applications/GPIO/esp32_wifi_marauder/manifest.yml b/applications/GPIO/esp32_wifi_marauder/manifest.yml deleted file mode 100644 index 4c48cc30..00000000 --- a/applications/GPIO/esp32_wifi_marauder/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/0xchocolate/flipperzero-wifi-marauder.git - commit_sha: 5dc2fd6828a0ceede3145ca434e1d6c36747a723 -id: "esp32_wifi_marauder" -category: "GPIO" -short_description: "Companion app for interfacing with ESP32 WiFi Marauder" -description: "@./docs/README.md" -changelog: "@./docs/changelog.md" -screenshots: - - "./screenshots/marauder-topmenu.png" - - "./screenshots/marauder-save-pcaps.png" - - "./screenshots/marauder-script-demo.png" diff --git a/applications/GPIO/esp_flasher/README.md b/applications/GPIO/esp_flasher/README.md deleted file mode 100644 index d1daf01c..00000000 --- a/applications/GPIO/esp_flasher/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![esp_flasher](https://catalog.flipperzero.one/application/esp_flasher/widget)](https://catalog.flipperzero.one/application/esp_flasher/page) \ No newline at end of file diff --git a/applications/GPIO/esp_flasher/manifest.yml b/applications/GPIO/esp_flasher/manifest.yml deleted file mode 100644 index 09d1a3fc..00000000 --- a/applications/GPIO/esp_flasher/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/0xchocolate/flipperzero-esp-flasher.git - commit_sha: 91bfde3f0c42f4330728fe1308a69a420d4380c1 -short_description: "Flipper Zero app to flash ESP chips from the device (no computer connection needed!)" -description: "@./docs/README.md" -changelog: "@./docs/changelog.md" -screenshots: - - "./screenshots/esp-flasher-browse.png" - - "./screenshots/esp-flasher-flashing.png" diff --git a/applications/GPIO/eth_troubleshooter/README.md b/applications/GPIO/eth_troubleshooter/README.md deleted file mode 100644 index 936506f6..00000000 --- a/applications/GPIO/eth_troubleshooter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![eth_troubleshooter](https://catalog.flipperzero.one/application/eth_troubleshooter/widget)](https://catalog.flipperzero.one/application/eth_troubleshooter/page) \ No newline at end of file diff --git a/applications/GPIO/eth_troubleshooter/manifest.yml b/applications/GPIO/eth_troubleshooter/manifest.yml deleted file mode 100644 index bbe0d41f..00000000 --- a/applications/GPIO/eth_troubleshooter/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/eth_troubleshooter -description: "@README.md" -changelog: "v1.1 - Release, v1.2 - Sync with latest version" -author: "@karasevia & @arag0re & @xMasterX" -screenshots: - - "./docs/1.png" - - "./docs/2.png" - - "./docs/3.png" - - "./docs/4.png" diff --git a/applications/GPIO/fcom/README.md b/applications/GPIO/fcom/README.md deleted file mode 100644 index 294418c8..00000000 --- a/applications/GPIO/fcom/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![fcom](https://catalog.flipperzero.one/application/fcom/widget)](https://catalog.flipperzero.one/application/fcom/page) \ No newline at end of file diff --git a/applications/GPIO/fcom/manifest.yml b/applications/GPIO/fcom/manifest.yml deleted file mode 100644 index 7200fc53..00000000 --- a/applications/GPIO/fcom/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/TylerWilley/flipper-f-com - commit_sha: 36fd7080ba98871b50ae6925feb50826dd8d3c7f -id: "fcom" -category: "GPIO" -short_description: "App for interacting with digimon virtual pets" -description: "@.catalog/README.md" -changelog: "@.catalog/changelog.md" -screenshots: - - ".catalog/screenshots/fcom-topmenu.png" - - ".catalog/screenshots/fcom-digiroms.png" - - ".catalog/screenshots/fcom-sendcode.png" diff --git a/applications/GPIO/fencing_testbox/README.md b/applications/GPIO/fencing_testbox/README.md deleted file mode 100644 index 96303308..00000000 --- a/applications/GPIO/fencing_testbox/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![fencing_testbox](https://catalog.flipperzero.one/application/fencing_testbox/widget)](https://catalog.flipperzero.one/application/fencing_testbox/page) diff --git a/applications/GPIO/fencing_testbox/manifest.yml b/applications/GPIO/fencing_testbox/manifest.yml deleted file mode 100644 index cb29fc83..00000000 --- a/applications/GPIO/fencing_testbox/manifest.yml +++ /dev/null @@ -1,18 +0,0 @@ -id: "fencing_testbox" -name: "Fencing Test Box" -category: "GPIO" -author: "@aarjaneiro" -version: "0.1" -icon: "assets/fencing_testbox_10px.png" -description: "A simple emulator of a fencing testbox for the Flipper Zero." -changelog: "@CHANGELOG.md" -screenshots: - - "screenshots/main_page.png" - - "screenshots/testbox.png" - - "screenshots/wiring.png" - -sourcecode: - type: git - location: - origin: https://github.com/aarjaneiro/fencing_testbox/ - commit_sha: 58e4fad8796fc295ea9e7a8da72fa62db1d6b8fe \ No newline at end of file diff --git a/applications/GPIO/flashlight/README.md b/applications/GPIO/flashlight/README.md deleted file mode 100644 index a1b89fa7..00000000 --- a/applications/GPIO/flashlight/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flashlight](https://catalog.flipperzero.one/application/flashlight/widget)](https://catalog.flipperzero.one/application/flashlight/page) \ No newline at end of file diff --git a/applications/GPIO/flashlight/manifest.yml b/applications/GPIO/flashlight/manifest.yml deleted file mode 100644 index a037faa8..00000000 --- a/applications/GPIO/flashlight/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/flipper-flashlight -description: "Enables 3.3v on pin 7/C3 when you press Ok and leaves it on when you exit app" -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "@xMasterX" -screenshots: - - "./img/1.png" diff --git a/applications/GPIO/flip_downloader/README.md b/applications/GPIO/flip_downloader/README.md deleted file mode 100644 index 497b9427..00000000 --- a/applications/GPIO/flip_downloader/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flip_downloader](https://catalog.flipperzero.one/application/flip_downloader/widget)](https://catalog.flipperzero.one/application/flip_downloader/page) \ No newline at end of file diff --git a/applications/GPIO/flip_downloader/manifest.yml b/applications/GPIO/flip_downloader/manifest.yml deleted file mode 100644 index c72d17a1..00000000 --- a/applications/GPIO/flip_downloader/manifest.yml +++ /dev/null @@ -1,21 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jblanked/FlipDownloader.git - commit_sha: c10a100400d014ac70a9d228ae395fcab2ee3635 -short_description: "Download apps and assets directly to your Flipper Zero using WiFi." -description: "@./assets/README.md" -changelog: "@./assets/CHANGELOG.md" -author: "JBlanked" -name: "FlipDownloader" -version: "1.3.5" -id: "flip_downloader" -category: "GPIO" -targets: ['all'] -icon: "app.png" -screenshots: - - "assets/01-main-menu.png" - - "assets/05-browse.png" - - "assets/02-catalog.png" - - "assets/03-list.png" - - "assets/04-success.png" \ No newline at end of file diff --git a/applications/GPIO/flip_gemini/manifest.yml b/applications/GPIO/flip_gemini/manifest.yml deleted file mode 100644 index e17aa124..00000000 --- a/applications/GPIO/flip_gemini/manifest.yml +++ /dev/null @@ -1,18 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jblanked/FlipGemini.git - commit_sha: 64ea22ca7321e1b895a7868f63ab6cf9491e76db -short_description: "Chat with Google's Gemini AI on your Flipper Zero" -description: "@README.md" -changelog: "@CHANGELOG.md" -author: "JBlanked" -name: "FlipGemini" -version: "1.0" -id: "flip_gemini" -category: "GPIO" -targets: ['all'] -icon: "app.png" -screenshots: - - "assets/chat.png" - - "assets/prompt.png" diff --git a/applications/GPIO/flip_library/README.md b/applications/GPIO/flip_library/README.md deleted file mode 100644 index f5480007..00000000 --- a/applications/GPIO/flip_library/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flip_library](https://catalog.flipperzero.one/application/flip_library/widget)](https://catalog.flipperzero.one/application/flip_library/page) \ No newline at end of file diff --git a/applications/GPIO/flip_library/manifest.yml b/applications/GPIO/flip_library/manifest.yml deleted file mode 100644 index 8c844392..00000000 --- a/applications/GPIO/flip_library/manifest.yml +++ /dev/null @@ -1,19 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jblanked/FlipLibrary.git - commit_sha: f2643329da52b4448ff6b05181d9f9350bb06a02 -short_description: "Utilize WiFi to retrieve data from 20 different APIs." -description: "@README.md" -changelog: "@CHANGELOG.md" -author: "JBlanked" -name: "FlipLibrary" -version: "1.5" -id: "flip_library" -category: "GPIO" -targets: ['all'] -icon: "app.png" -screenshots: - - "assets/01-main.png" - - "assets/02-random-facts.png" - - "assets/03-definition.png" \ No newline at end of file diff --git a/applications/GPIO/flip_map/manifest.yml b/applications/GPIO/flip_map/manifest.yml deleted file mode 100644 index 01e0476b..00000000 --- a/applications/GPIO/flip_map/manifest.yml +++ /dev/null @@ -1,19 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jblanked/FlipMap.git - commit_sha: a931e36bdfff56ea8b2c908e116036ec288f9b4a -short_description: "Find Flipper Zero Users." -description: "@README.md" -changelog: "@CHANGELOG.md" -author: "JBlanked" -name: "FlipMap" -version: "0.2.2" -id: "flip_map" -category: "GPIO" -targets: ['all'] -icon: "app.png" -screenshots: - - "assets/home.png" - - "assets/settings.png" - - "assets/warning.png" \ No newline at end of file diff --git a/applications/GPIO/flip_rpi/README.md b/applications/GPIO/flip_rpi/README.md deleted file mode 100644 index 2d19cca1..00000000 --- a/applications/GPIO/flip_rpi/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flip_rpi](https://catalog.flipperzero.one/application/flip_rpi/widget)](https://catalog.flipperzero.one/application/flip_rpi/page) \ No newline at end of file diff --git a/applications/GPIO/flip_rpi/manifest.yml b/applications/GPIO/flip_rpi/manifest.yml deleted file mode 100644 index bb20af0c..00000000 --- a/applications/GPIO/flip_rpi/manifest.yml +++ /dev/null @@ -1,18 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jblanked/FlipRPI.git - commit_sha: 7626374166230db1034f9a00f01c1c53639dd781 -short_description: "Use your Flipper Zero to control your Raspberry Pi." -description: "@README.md" -changelog: "@./assets/CHANGELOG.md" -author: "JBlanked" -name: "FlipRPI" -version: "1.0" -id: "flip_rpi" -category: "GPIO" -targets: ['all'] -icon: "app.png" -screenshots: - - "assets/01-home.png" - - "assets/02-saved.png" \ No newline at end of file diff --git a/applications/GPIO/flip_social/README.md b/applications/GPIO/flip_social/README.md deleted file mode 100644 index 95c7047c..00000000 --- a/applications/GPIO/flip_social/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flip_social](https://catalog.flipperzero.one/application/flip_social/widget)](https://catalog.flipperzero.one/application/flip_social/page) \ No newline at end of file diff --git a/applications/GPIO/flip_social/manifest.yml b/applications/GPIO/flip_social/manifest.yml deleted file mode 100644 index 7126410b..00000000 --- a/applications/GPIO/flip_social/manifest.yml +++ /dev/null @@ -1,21 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jblanked/FlipSocial.git - commit_sha: 195976895a37dcd076c1a69c914de51fdac836eb -short_description: "Social media platform for the Flipper Zero." -description: "@./assets/README.md" -changelog: "@./assets/CHANGELOG.md" -author: "JBlanked" -name: "FlipSocial" -version: "2.0.9" -id: "flip_social" -category: "GPIO" -targets: ['all'] -icon: "app.png" -screenshots: - - "assets/flip-social-post-2.png" - - "assets/flip-social-main-menu.png" - - "assets/flip-social-enter-message.png" - - "assets/flip-social-post-1.png" - - "assets/flip-social-logged-out-menu.png" \ No newline at end of file diff --git a/applications/GPIO/flip_telegram/manifest.yml b/applications/GPIO/flip_telegram/manifest.yml deleted file mode 100644 index b531b72e..00000000 --- a/applications/GPIO/flip_telegram/manifest.yml +++ /dev/null @@ -1,20 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jblanked/FlipTelegram.git - commit_sha: 8a0a8a5672c33bd6cdf264b11da749696e35e342 -short_description: "Flipper Zero Telegram Client" -description: "@README.md" -changelog: "@CHANGELOG.md" -author: "JBlanked" -name: "FlipTelegram" -version: "1.0.1" -id: "flip_telegram" -category: "GPIO" -targets: ['all'] -icon: "app.png" -screenshots: - - "assets/home.png" - - "assets/messages.png" - - "assets/settings.png" - - "assets/send.png" \ No newline at end of file diff --git a/applications/GPIO/flip_trader/README.md b/applications/GPIO/flip_trader/README.md deleted file mode 100644 index eb6ca727..00000000 --- a/applications/GPIO/flip_trader/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flip_trader](https://catalog.flipperzero.one/application/flip_trader/widget)](https://catalog.flipperzero.one/application/flip_trader/page) \ No newline at end of file diff --git a/applications/GPIO/flip_trader/manifest.yml b/applications/GPIO/flip_trader/manifest.yml deleted file mode 100644 index ff99703c..00000000 --- a/applications/GPIO/flip_trader/manifest.yml +++ /dev/null @@ -1,20 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jblanked/FlipTrader.git - commit_sha: 1717a8ac7e916bd7a246b79971a5d602e018faf6 -short_description: "Use WiFi to get the price of stocks and currency pairs on your Flipper Zero." -description: "@README.md" -changelog: "@CHANGELOG.md" -author: "JBlanked" -name: "FlipTrader" -version: "1.2" -id: "flip_trader" -category: "GPIO" -targets: ['all'] -icon: "app.png" -screenshots: - - "assets/01-main.png" - - "assets/02-assets.png" - - "assets/03-xauusd.png" - - "assets/04-btcusd.png" \ No newline at end of file diff --git a/applications/GPIO/flip_weather/README.md b/applications/GPIO/flip_weather/README.md deleted file mode 100644 index 5a01130a..00000000 --- a/applications/GPIO/flip_weather/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flip_weather](https://catalog.flipperzero.one/application/flip_weather/widget)](https://catalog.flipperzero.one/application/flip_weather/page) \ No newline at end of file diff --git a/applications/GPIO/flip_weather/manifest.yml b/applications/GPIO/flip_weather/manifest.yml deleted file mode 100644 index a44687f8..00000000 --- a/applications/GPIO/flip_weather/manifest.yml +++ /dev/null @@ -1,18 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jblanked/FlipWeather.git - commit_sha: 8faacc6ab74fa6726f45183cafa330f71a9aa9b7 -short_description: "Use WiFi to get GPS and Weather information on your Flipper Zero." -description: "@README.md" -changelog: "@CHANGELOG.md" -author: "JBlanked" -name: "FlipWeather" -version: "1.4" -id: "flip_weather" -category: "GPIO" -targets: ['all'] -icon: "app.png" -screenshots: - - "assets/01-home.png" - - "assets/02-weather.png" \ No newline at end of file diff --git a/applications/GPIO/flip_wifi/README.md b/applications/GPIO/flip_wifi/README.md deleted file mode 100644 index 83538f4a..00000000 --- a/applications/GPIO/flip_wifi/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flip_wifi](https://catalog.flipperzero.one/application/flip_wifi/widget)](https://catalog.flipperzero.one/application/flip_wifi/page) \ No newline at end of file diff --git a/applications/GPIO/flip_wifi/manifest.yml b/applications/GPIO/flip_wifi/manifest.yml deleted file mode 100644 index 0e54f320..00000000 --- a/applications/GPIO/flip_wifi/manifest.yml +++ /dev/null @@ -1,18 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jblanked/FlipWiFi.git - commit_sha: 411c391118bdcd9759302f2a662cfae07df58d61 -short_description: "FlipperHTTP companion app. Scan, deauth, and save WiFi networks on your Flipper Zero." -description: "@README.md" -changelog: "@CHANGELOG.md" -author: "JBlanked" -name: "FlipWiFi" -version: "1.6.3" -id: "flip_wifi" -category: "GPIO" -targets: ['all'] -icon: "app.png" -screenshots: - - "assets/01-home.png" - - "assets/02-saved.png" \ No newline at end of file diff --git a/applications/GPIO/flip_world/README.md b/applications/GPIO/flip_world/README.md deleted file mode 100644 index 4e67c1d5..00000000 --- a/applications/GPIO/flip_world/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flip_world](https://catalog.flipperzero.one/application/flip_world/widget)](https://catalog.flipperzero.one/application/flip_world/page) \ No newline at end of file diff --git a/applications/GPIO/flip_world/manifest.yml b/applications/GPIO/flip_world/manifest.yml deleted file mode 100644 index c6115350..00000000 --- a/applications/GPIO/flip_world/manifest.yml +++ /dev/null @@ -1,23 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jblanked/FlipWorld.git - commit_sha: 24bf2a267d2215c6e420e40bd01d19bd19a56397 - subdir: FlipperZero/src -short_description: "The first open-world multiplayer game for the Flipper Zero" -description: "@./assets/README.md" -changelog: "@./assets/CHANGELOG.md" -author: "JBlanked" -name: "FlipWorld" -version: "1.0.3" -id: "flip_world" -category: "GPIO" -targets: ['all'] -icon: "app.png" -screenshots: - - "assets/01-home.png" - - "assets/02-town.png" - - "assets/03-town.png" - - "assets/04-town.png" - - "assets/05-tree.png" - - "assets/06-tree.png" \ No newline at end of file diff --git a/applications/GPIO/flipagotchi/README.md b/applications/GPIO/flipagotchi/README.md deleted file mode 100644 index e625cd6c..00000000 --- a/applications/GPIO/flipagotchi/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flipagotchi](https://catalog.flipperzero.one/application/flipagotchi/widget)](https://catalog.flipperzero.one/application/flipagotchi/page) \ No newline at end of file diff --git a/applications/GPIO/flipagotchi/manifest.yml b/applications/GPIO/flipagotchi/manifest.yml deleted file mode 100644 index a566b947..00000000 --- a/applications/GPIO/flipagotchi/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Matt-London/pwnagotchi-flipper.git - commit_sha: 231029e185e15bd418feae77f9ab218531582e8c - subdir: flipagotchi -short_description: Flipagotchi -author: "Matt-London" -description: "@./README.md" -changelog: "All changes tracked on GitHub repository" -screenshots: - - "screenshots/PwnZeroBaseWFace.png" diff --git a/applications/GPIO/flipboard_blinky/README.md b/applications/GPIO/flipboard_blinky/README.md deleted file mode 100644 index 1179d9a4..00000000 --- a/applications/GPIO/flipboard_blinky/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flipboard_blinky](https://catalog.flipperzero.one/application/flipboard_blinky/widget)](https://catalog.flipperzero.one/application/flipboard_blinky/page) \ No newline at end of file diff --git a/applications/GPIO/flipboard_blinky/manifest.yml b/applications/GPIO/flipboard_blinky/manifest.yml deleted file mode 100644 index 5186ad32..00000000 --- a/applications/GPIO/flipboard_blinky/manifest.yml +++ /dev/null @@ -1,17 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jamisonderek/flipboard.git - commit_sha: b2e0374a4c2b4451d9d39a5fbc4eb08bb0280b98 - subdir: flipblinky -description: "@./gallery/README.md" -changelog: "@./gallery/CHANGELOG.md" -author: "CodeAllNight (MrDerekJamison)" -screenshots: - - "gallery/00-blinky-splash.png" - - "gallery/02-blinky-config-text.png" - - "gallery/07-blinky-nametag.png" - - "gallery/06-blinky-qrcode.png" - - "gallery/01-blinky-main-menu.png" - - "gallery/03-blinky-config-text-line.png" - diff --git a/applications/GPIO/flipboard_keyboard/README.md b/applications/GPIO/flipboard_keyboard/README.md deleted file mode 100644 index 2fc9e762..00000000 --- a/applications/GPIO/flipboard_keyboard/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flipboard_keyboard](https://catalog.flipperzero.one/application/flipboard_keyboard/widget)](https://catalog.flipperzero.one/application/flipboard_keyboard/page) \ No newline at end of file diff --git a/applications/GPIO/flipboard_keyboard/manifest.yml b/applications/GPIO/flipboard_keyboard/manifest.yml deleted file mode 100644 index 8af9ce04..00000000 --- a/applications/GPIO/flipboard_keyboard/manifest.yml +++ /dev/null @@ -1,16 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jamisonderek/flipboard.git - commit_sha: b2e0374a4c2b4451d9d39a5fbc4eb08bb0280b98 - subdir: flipkeyboard -description: "@./gallery/README.md" -changelog: "@./gallery/CHANGELOG.md" -author: "CodeAllNight (MrDerekJamison)" -screenshots: - - "gallery/07-key-splash.png" - - "gallery/04-key-config-3.png" - - "gallery/06-key-keyboard.png" - - "gallery/03-key-config-1.png" - - "gallery/04-key-config-2.png" - - "gallery/08-key-qrcode.png" diff --git a/applications/GPIO/flipboard_signal/README.md b/applications/GPIO/flipboard_signal/README.md deleted file mode 100644 index 472d501d..00000000 --- a/applications/GPIO/flipboard_signal/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flipboard_signal](https://catalog.flipperzero.one/application/flipboard_signal/widget)](https://catalog.flipperzero.one/application/flipboard_signal/page) \ No newline at end of file diff --git a/applications/GPIO/flipboard_signal/manifest.yml b/applications/GPIO/flipboard_signal/manifest.yml deleted file mode 100644 index c8765496..00000000 --- a/applications/GPIO/flipboard_signal/manifest.yml +++ /dev/null @@ -1,15 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jamisonderek/flipboard.git - commit_sha: a2b670ea3b6387f6aab1f33b5b9b57f92e1f13e8 - subdir: flipsignal -description: "@./gallery/README.md" -changelog: "@./gallery/CHANGELOG.md" -author: "CodeAllNight (MrDerekJamison)" -screenshots: - - "gallery/05-signal-splash.png" - - "gallery/03-signal-config-1.png" - - "gallery/04-signal-sending.png" - - "gallery/01-signal-main-menu.png" - - "gallery/06-signal-qrcode.png" diff --git a/applications/GPIO/flipboard_simon/README.md b/applications/GPIO/flipboard_simon/README.md deleted file mode 100644 index 67004874..00000000 --- a/applications/GPIO/flipboard_simon/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flipboard_simon](https://catalog.flipperzero.one/application/flipboard_simon/widget)](https://catalog.flipperzero.one/application/flipboard_simon/page) \ No newline at end of file diff --git a/applications/GPIO/flipboard_simon/manifest.yml b/applications/GPIO/flipboard_simon/manifest.yml deleted file mode 100644 index cf24d2ab..00000000 --- a/applications/GPIO/flipboard_simon/manifest.yml +++ /dev/null @@ -1,16 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jamisonderek/flipboard.git - commit_sha: b2e0374a4c2b4451d9d39a5fbc4eb08bb0280b98 - subdir: simon-tutorial/completed/step-16/flipsimon -description: "@./gallery/README.md" -changelog: "@./gallery/CHANGELOG.md" -author: "CodeAllNight (MrDerekJamison)" -screenshots: - - "gallery/01-simon-splash.png" - - "gallery/07-simon-ok-play.png" - - "gallery/07-simon-teaching.png" - - "gallery/06-simon-win.png" - - "gallery/04-simon-config-1.png" - - "gallery/08-simon-qrcode.png" diff --git a/applications/GPIO/flipper_gb_printer/README.md b/applications/GPIO/flipper_gb_printer/README.md deleted file mode 100644 index 3897e438..00000000 --- a/applications/GPIO/flipper_gb_printer/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![pokemon](https://catalog.flipperzero.one/application/flipper_gb_printer/widget)](https://catalog.flipperzero.one/application/flipper_gb_printer/page) diff --git a/applications/GPIO/flipper_gb_printer/manifest.yml b/applications/GPIO/flipper_gb_printer/manifest.yml deleted file mode 100644 index a68dd619..00000000 --- a/applications/GPIO/flipper_gb_printer/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/kbembedded/flipper-gb-printer/ - commit_sha: 26820ad58096ef916717a46f7206592ed058823d -description: "@.assets/README_catalog.md" -changelog: "@changelog.md" -screenshots: - - ".assets/fgp-recv.png" - - ".assets/fgp-mainmenu.png" - - ".assets/fgp-recvconfig.png" - - ".assets/fgp-pinconf.png" diff --git a/applications/GPIO/flipper_geiger/README.md b/applications/GPIO/flipper_geiger/README.md deleted file mode 100644 index b6429514..00000000 --- a/applications/GPIO/flipper_geiger/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flipper_geiger](https://catalog.flipperzero.one/application/flipper_geiger/widget)](https://catalog.flipperzero.one/application/flipper_geiger/page) \ No newline at end of file diff --git a/applications/GPIO/flipper_geiger/manifest.yml b/applications/GPIO/flipper_geiger/manifest.yml deleted file mode 100644 index 727bae7c..00000000 --- a/applications/GPIO/flipper_geiger/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/flipper_geiger -description: "Works with J305 Geiger tube on external board" -changelog: "v1.0 - Initial release, v1.1 - Sync Updates, v1.2 - Fixes for latest API, v1.3 - Fix icon, v1.4 - Sync updates and latest API support, v1.5 - Sync with latest version" -author: "@nmrr" -screenshots: - - "./img/2.png" - - "./img/3.png" - - "./img/1.png" diff --git a/applications/GPIO/flipper_http/manifest.yml b/applications/GPIO/flipper_http/manifest.yml deleted file mode 100644 index 52162f44..00000000 --- a/applications/GPIO/flipper_http/manifest.yml +++ /dev/null @@ -1,18 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jblanked/FlipperHTTP-App.git - commit_sha: 345b21efbad779b3c86de890ecc64f52ee8aeb5c -short_description: "FlipperHTTP Companion App" -description: "@README.md" -changelog: "@CHANGELOG.md" -author: "JBlanked" -name: "FlipperHTTP" -version: "1.1" -id: "flipper_http" -category: "GPIO" -targets: ['all'] -icon: "app.png" -screenshots: - - "assets/home.png" - - "assets/status.png" \ No newline at end of file diff --git a/applications/GPIO/flipper_spi_terminal/README.md b/applications/GPIO/flipper_spi_terminal/README.md deleted file mode 100644 index b776376a..00000000 --- a/applications/GPIO/flipper_spi_terminal/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flipper_spi_terminal](https://catalog.flipperzero.one/application/flipper_spi_terminal/widget)](https://catalog.flipperzero.one/application/flipper_spi_terminal/page) \ No newline at end of file diff --git a/applications/GPIO/flipper_spi_terminal/manifest.yml b/applications/GPIO/flipper_spi_terminal/manifest.yml deleted file mode 100644 index 06d67e15..00000000 --- a/applications/GPIO/flipper_spi_terminal/manifest.yml +++ /dev/null @@ -1,15 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/janwiesemann/flipper-spi-terminal.git - commit_sha: 72c4e8de18dd49d6e32e7f016c983eafc4e245dd -description: "@./app_catalog/README.MD" -changelog: "@./app_catalog/CHANGELOG.MD" -screenshots: - - screenshots/screen_main.png - - screenshots/screen_terminal_hex.png - - screenshots/screen_terminal_text.png - - screenshots/screen_terminal_auto.png - - screenshots/screen_terminal_binary.png - - screenshots/screen_config.png - - screenshots/screen_config_help.png diff --git a/applications/GPIO/flipperscope/README.md b/applications/GPIO/flipperscope/README.md deleted file mode 100644 index c213ed1e..00000000 --- a/applications/GPIO/flipperscope/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flipperscope](https://catalog.flipperzero.one/application/flipperscope/widget)](https://catalog.flipperzero.one/application/flipperscope/page) \ No newline at end of file diff --git a/applications/GPIO/flipperscope/manifest.yml b/applications/GPIO/flipperscope/manifest.yml deleted file mode 100644 index 98e13c3d..00000000 --- a/applications/GPIO/flipperscope/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/anfractuosity/flipperscope.git - commit_sha: 48ec8e2ecc6d88cdcad21a742676994ec1a04da4 -description: "@./docs/README.md" -changelog: "@./docs/CHANGELOG.md" -screenshots: - - "./screenshots/freq.png" - - "./screenshots/volt.png" - - "./screenshots/fft.png" - - "./screenshots/capture.png" - - "./screenshots/setup.png" diff --git a/applications/GPIO/fn_test/README.md b/applications/GPIO/fn_test/README.md deleted file mode 100644 index 43680214..00000000 --- a/applications/GPIO/fn_test/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![fn_test](https://catalog.flipperzero.one/application/fn_test/widget)](https://catalog.flipperzero.one/application/fn_test/page) \ No newline at end of file diff --git a/applications/GPIO/fn_test/manifest.yml b/applications/GPIO/fn_test/manifest.yml deleted file mode 100644 index 29f6a72b..00000000 --- a/applications/GPIO/fn_test/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/polarikus/flipper-zero_fn_tester - commit_sha: 9162403087a96d1df1afa1e89ed80d656a0c2dc4 -short_description: "Application for testing the fiscal drive (Only for the Russian market)" -description: "@./.catalog/README.md" -changelog: "@./.catalog/CHANGELOG.md" -screenshots: - - "./.catalog/screenshots/Menue.png" - - "./.catalog/screenshots/Detecting.png" - - "./.catalog/screenshots/FNInfo.png" - - "./.catalog/screenshots/LifeInfo.png" - - "./.catalog/screenshots/Wirning.png" diff --git a/applications/GPIO/free_roam/manifest.yml b/applications/GPIO/free_roam/manifest.yml deleted file mode 100644 index f792f17d..00000000 --- a/applications/GPIO/free_roam/manifest.yml +++ /dev/null @@ -1,20 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jblanked/Free-Roam.git - commit_sha: df5a5c6c1f7181aac7fe03af722165f37f3ca385 - subdir: FlipperZero -short_description: "3D Open World Multiplayer Game" -description: "@README.md" -changelog: "@CHANGELOG.md" -author: "JBlanked" -name: "Free Roam" -version: "0.5" -id: "free_roam" -category: "GPIO" -targets: ['all'] -icon: "app.png" -screenshots: - - "assets/game.png" - - "assets/menu.png" - - "assets/main.png" \ No newline at end of file diff --git a/applications/GPIO/gemini_ia/README.md b/applications/GPIO/gemini_ia/README.md deleted file mode 100644 index 9273dd1e..00000000 --- a/applications/GPIO/gemini_ia/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![gemini_ia](https://catalog.flipperzero.one/application/gemini_ia/widget)](https://catalog.flipperzero.one/application/gemini_ia/page) \ No newline at end of file diff --git a/applications/GPIO/gemini_ia/manifest.yml b/applications/GPIO/gemini_ia/manifest.yml deleted file mode 100644 index 38660551..00000000 --- a/applications/GPIO/gemini_ia/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/d4rks1d33/Gemini-Flipper.git - commit_sha: 6776f9ae40dc5e1954d29ac517460c6bb33b2571 -id: "gemini_ia" -category: "GPIO" -short_description: "Companion app for interfacing with Gemini IA using the Flipper Zero" -description: "@./README.md" -changelog: "@./changelog.md" -screenshots: - - "./screenshots/menu.png" - - "./screenshots/menu2.png" - - "./screenshots/chat.png" diff --git a/applications/GPIO/ghost_esp/manifest.yml b/applications/GPIO/ghost_esp/manifest.yml deleted file mode 100644 index b1d0ef45..00000000 --- a/applications/GPIO/ghost_esp/manifest.yml +++ /dev/null @@ -1,19 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jaylikesbunda/ghost_esp_app.git - commit_sha: 3ed4e69f173ce92ac407bb6038cbd2f35b4d0186 -name: "[ESP32] Ghost ESP" -id: "ghost_esp" -version: "1.6.3" -author: "@Spooks4567, @jaylikesbunda and @tototo31" -short_description: "Companion app for Ghost ESP Firmware." -description: "WiFi: Scan networks, beacon spam, deauth attacks, packet capture, evil portal, network connection, and printer control. Bluetooth: Flipper discovery, Pineapple Detection, AirTag scanning, and packet capture. GPS: Wardriving capabilities." -changelog: "v1.6.x - Fixes, new commands, IR menu and more!" -category: "GPIO" -screenshots: - - "./screenshots/mainmenu.png" - - "./screenshots/wifi.png" - - "./screenshots/connect.png" - - "./screenshots/scan.png" -icon: "ghost_esp.png" diff --git a/applications/GPIO/gpio_7segment_output/README.md b/applications/GPIO/gpio_7segment_output/README.md deleted file mode 100644 index 1fc62f58..00000000 --- a/applications/GPIO/gpio_7segment_output/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![gpio_7segment_output](https://catalog.flipperzero.one/application/gpio_7segment_output/widget)](https://catalog.flipperzero.one/application/gpio_7segment_output/page) \ No newline at end of file diff --git a/applications/GPIO/gpio_7segment_output/manifest.yml b/applications/GPIO/gpio_7segment_output/manifest.yml deleted file mode 100644 index 5c07d6a0..00000000 --- a/applications/GPIO/gpio_7segment_output/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/gpio_7segment -description: "Control a 7-segment display with GPIO pins" -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "@jamisonderek" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/GPIO/gpio_controller/README.md b/applications/GPIO/gpio_controller/README.md deleted file mode 100644 index fc1b900e..00000000 --- a/applications/GPIO/gpio_controller/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![gpio_controller](https://catalog.flipperzero.one/application/gpio_controller/widget)](https://catalog.flipperzero.one/application/gpio_controller/page) \ No newline at end of file diff --git a/applications/GPIO/gpio_controller/manifest.yml b/applications/GPIO/gpio_controller/manifest.yml deleted file mode 100644 index 3ff0b73a..00000000 --- a/applications/GPIO/gpio_controller/manifest.yml +++ /dev/null @@ -1,10 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: a2004a3539c50ced20f6f24e61ba17c1dd86460b - subdir: apps_source_code/gpio_controller -description: "@./catalog/docs/Readme.md" -changelog: "@./catalog/docs/Changelog.md" -screenshots: - - "./catalog/screenshots/1.png" diff --git a/applications/GPIO/gpio_explorer_app/README.md b/applications/GPIO/gpio_explorer_app/README.md deleted file mode 100644 index 5759d956..00000000 --- a/applications/GPIO/gpio_explorer_app/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![gpio_explorer_app](https://catalog.flipperzero.one/application/gpio_explorer_app/widget)](https://catalog.flipperzero.one/application/gpio_explorer_app/page) \ No newline at end of file diff --git a/applications/GPIO/gpio_explorer_app/manifest.yml b/applications/GPIO/gpio_explorer_app/manifest.yml deleted file mode 100644 index 7e31e0f6..00000000 --- a/applications/GPIO/gpio_explorer_app/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - - origin: https://github.com/EvgeniGenchev07/gpio_explorer.git - commit_sha: a1e00e3f97e5f3981e86f3e5701164eb4c78fd5c - -description: "@README.md" -changelog: "@CHANGELOG.md" -screenshots: - - screenshots/main.png - - screenshots/gpio_reader.png - - screenshots/rgb.png - - screenshots/led.png diff --git a/applications/GPIO/gpio_reader/README.md b/applications/GPIO/gpio_reader/README.md deleted file mode 100644 index 0ff6f85c..00000000 --- a/applications/GPIO/gpio_reader/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![gpio_reader](https://catalog.flipperzero.one/application/gpio_reader/widget)](https://catalog.flipperzero.one/application/gpio_reader/page) \ No newline at end of file diff --git a/applications/GPIO/gpio_reader/manifest.yml b/applications/GPIO/gpio_reader/manifest.yml deleted file mode 100644 index 065ac45b..00000000 --- a/applications/GPIO/gpio_reader/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/gpio_pins_reader -description: "Read GPIO pins states, and display them on the screen" -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "@aureli1c" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/GPIO/gpio_sentry_safe/README.md b/applications/GPIO/gpio_sentry_safe/README.md deleted file mode 100644 index fb0851b0..00000000 --- a/applications/GPIO/gpio_sentry_safe/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![gpio_sentry_safe](https://catalog.flipperzero.one/application/gpio_sentry_safe/widget)](https://catalog.flipperzero.one/application/gpio_sentry_safe/page) \ No newline at end of file diff --git a/applications/GPIO/gpio_sentry_safe/manifest.yml b/applications/GPIO/gpio_sentry_safe/manifest.yml deleted file mode 100644 index a4e6d011..00000000 --- a/applications/GPIO/gpio_sentry_safe/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/H4ckd4ddy/flipperzero-sentry-safe-plugin.git - commit_sha: 03bef91f24195fac3f1e6562d46ea4c5321d0c0b -short_description: "App exploiting vulnerability to open any Sentry Safe and Master Lock electronic safes without pin code." -description: "@README_plain.md" -changelog: "@changelog.md" -author: "@H4ckd4ddy" -screenshots: - - "./images/main.png" - - "./images/help.png" - - "./images/link.png" diff --git a/applications/GPIO/gps_nmea/README.md b/applications/GPIO/gps_nmea/README.md deleted file mode 100644 index a18dcd13..00000000 --- a/applications/GPIO/gps_nmea/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![gps_nmea](https://catalog.flipperzero.one/application/gps_nmea/widget)](https://catalog.flipperzero.one/application/gps_nmea/page) \ No newline at end of file diff --git a/applications/GPIO/gps_nmea/manifest.yml b/applications/GPIO/gps_nmea/manifest.yml deleted file mode 100644 index e3898b71..00000000 --- a/applications/GPIO/gps_nmea/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: base_pack/gps_nmea_uart -description: "@README.md" -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Fixes for latest API, v1.3 - Various updates, v1.4 - Sync updates and latest API support, v1.5 - Sync with latest version" -author: "@ezod & @xMasterX" -screenshots: - - "./img/1.png" - - "./img/2.png" - - "./img/3.png" diff --git a/applications/GPIO/i2ctools/README.md b/applications/GPIO/i2ctools/README.md deleted file mode 100644 index d562a24b..00000000 --- a/applications/GPIO/i2ctools/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![i2ctools](https://catalog.flipperzero.one/application/i2ctools/widget)](https://catalog.flipperzero.one/application/i2ctools/page) \ No newline at end of file diff --git a/applications/GPIO/i2ctools/manifest.yml b/applications/GPIO/i2ctools/manifest.yml deleted file mode 100644 index a9f701e2..00000000 --- a/applications/GPIO/i2ctools/manifest.yml +++ /dev/null @@ -1,17 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/NaejEL/flipperzero-i2ctools.git - commit_sha: 51e0d451e25fab4b229ff020747c939e8f27d786 -id: "i2ctools" -category: "GPIO" -short_description: "Set of i2c tools" -description: "@./docs/README.md" -changelog: "@./docs/changelog.md" -screenshots: - - "./screenshots/main_screen.png" - - "./screenshots/scan_screen.png" - - "./screenshots/sniff_screen.png" - - "./screenshots/send_screen.png" - - "./screenshots/infos_screen.png" - diff --git a/applications/GPIO/ina_meter/README.md b/applications/GPIO/ina_meter/README.md deleted file mode 100644 index 41eb9a88..00000000 --- a/applications/GPIO/ina_meter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![ina_meter](https://catalog.flipperzero.one/application/ina_meter/widget)](https://catalog.flipperzero.one/application/ina_meter/page) \ No newline at end of file diff --git a/applications/GPIO/ina_meter/manifest.yml b/applications/GPIO/ina_meter/manifest.yml deleted file mode 100644 index 990449d5..00000000 --- a/applications/GPIO/ina_meter/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/cepetr/flipper-tina.git - commit_sha: f21f4bd5d7274eafe4e3f22e8d6135db55f1a313 -description: "@README.md" -changelog: "@CHANGELOG.md" -screenshots: - - "./screenshots/screenshot_gauge.png" - - "./screenshots/screenshot_config.png" - - "./screenshots/screenshot_datalog.png" - - "./screenshots/screenshot_wiring.png" diff --git a/applications/GPIO/ld2410_human_detector/README.md b/applications/GPIO/ld2410_human_detector/README.md deleted file mode 100644 index 98154422..00000000 --- a/applications/GPIO/ld2410_human_detector/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![ld2410_human_detector](https://catalog.flipperzero.one/application/ld2410_human_detector/widget)](https://catalog.flipperzero.one/application/ld2410_human_detector/page) \ No newline at end of file diff --git a/applications/GPIO/ld2410_human_detector/manifest.yml b/applications/GPIO/ld2410_human_detector/manifest.yml deleted file mode 100644 index 897606ca..00000000 --- a/applications/GPIO/ld2410_human_detector/manifest.yml +++ /dev/null @@ -1,16 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/sistemasorp/flipper-ld2410_human_detector.git - commit_sha: 57cf20e742712946d73f39014c2619a9be6e76e8 - -id: ld2410_human_detector -name: "LD2410 Human Detector" -category: "GPIO" -author: "Oscar Rodriguez" -description: "@DESCRIPTION.md" -short_description: "Human presence detection using HLK-LD2410 mmWave sensor" -changelog: "@CHANGELOG.md" - -screenshots: - - "screenshots/screenshot1.png" diff --git a/applications/GPIO/lightmeter/README.md b/applications/GPIO/lightmeter/README.md deleted file mode 100644 index 4e9da58a..00000000 --- a/applications/GPIO/lightmeter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![lightmeter](https://catalog.flipperzero.one/application/lightmeter/widget)](https://catalog.flipperzero.one/application/lightmeter/page) \ No newline at end of file diff --git a/applications/GPIO/lightmeter/manifest.yml b/applications/GPIO/lightmeter/manifest.yml deleted file mode 100644 index 58a5435a..00000000 --- a/applications/GPIO/lightmeter/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/oleksiikutuzov/flipperzero-lightmeter - commit_sha: 671723ddba0eb8f0089fcd2e9901e0a535bb8724 - subdir: application -description: "@./docs/README.md" -changelog: "@./docs/changelog.md" -screenshots: - - "./.flipcorg/gallery/gui_main.png" - - "./.flipcorg/gallery/gui_config.png" - - "./.flipcorg/gallery/gui_config_2.png" - - "./.flipcorg/gallery/gui_lux_meter.png" diff --git a/applications/GPIO/logic_analyzer/README.md b/applications/GPIO/logic_analyzer/README.md deleted file mode 100644 index 46908bd0..00000000 --- a/applications/GPIO/logic_analyzer/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![logic_analyzer](https://catalog.flipperzero.one/application/logic_analyzer/widget)](https://catalog.flipperzero.one/application/logic_analyzer/page) \ No newline at end of file diff --git a/applications/GPIO/logic_analyzer/manifest.yml b/applications/GPIO/logic_analyzer/manifest.yml deleted file mode 100644 index b331f9a4..00000000 --- a/applications/GPIO/logic_analyzer/manifest.yml +++ /dev/null @@ -1,10 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: a2004a3539c50ced20f6f24e61ba17c1dd86460b - subdir: apps_source_code/logic_analyzer -description: "@./catalog/docs/Readme.md" -changelog: "@./catalog/docs/Changelog.md" -screenshots: - - "./catalog/screenshots/1.png" diff --git a/applications/GPIO/longwave_clock/README.md b/applications/GPIO/longwave_clock/README.md deleted file mode 100644 index fa3399cb..00000000 --- a/applications/GPIO/longwave_clock/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![longwave_clock](https://catalog.flipperzero.one/application/longwave_clock/widget)](https://catalog.flipperzero.one/application/longwave_clock/page) \ No newline at end of file diff --git a/applications/GPIO/longwave_clock/manifest.yml b/applications/GPIO/longwave_clock/manifest.yml deleted file mode 100644 index 0660eb90..00000000 --- a/applications/GPIO/longwave_clock/manifest.yml +++ /dev/null @@ -1,15 +0,0 @@ -author: "@m7i-org" -category: "GPIO" -sourcecode: - type: git - location: - origin: https://github.com/m7i-org/flipper_longwave_clock.git - commit_sha: 85317993287ae00334423d88cde220212e791732 -description: | - Receive long wave time signals through inexpensive GPIO modules, or simulate receipt if you don't own any. - Supports DCF77 as well as MSF, with more protocols to be implemented in the future. -changelog: "@CHANGELOG.md" -screenshots: - - screenshots/v0.1/big_dcf77.png - - screenshots/v0.1/big_msf.png - - screenshots/v0.1/big_menu.png diff --git a/applications/GPIO/magspoof/README.md b/applications/GPIO/magspoof/README.md deleted file mode 100644 index e77476f5..00000000 --- a/applications/GPIO/magspoof/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![magspoof](https://catalog.flipperzero.one/application/magspoof/widget)](https://catalog.flipperzero.one/application/magspoof/page) \ No newline at end of file diff --git a/applications/GPIO/magspoof/manifest.yml b/applications/GPIO/magspoof/manifest.yml deleted file mode 100644 index a662b41d..00000000 --- a/applications/GPIO/magspoof/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/zacharyweiss/magspoof_flipper.git - commit_sha: be6fdbf8af4a4a6ea08b812732474d6c71d6bbd5 -description: | - Port of Samy Kamkar's MagSpoof project to the Flipper Zero. Emulates magstripe data wirelessly using an external electromagnet. - - Reading & internal TX are works-in-progress; for more information, confer GitHub. -changelog: "All version control & changes annotated on GitHub" -screenshots: - - assets/emulate.png - - assets/settings.png - - assets/emulate_config.png diff --git a/applications/GPIO/malveke_gb_cartridge/README.md b/applications/GPIO/malveke_gb_cartridge/README.md deleted file mode 100644 index c690c519..00000000 --- a/applications/GPIO/malveke_gb_cartridge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![malveke_gb_cartridge](https://catalog.flipperzero.one/application/malveke_gb_cartridge/widget)](https://catalog.flipperzero.one/application/malveke_gb_cartridge/page) \ No newline at end of file diff --git a/applications/GPIO/malveke_gb_cartridge/manifest.yml b/applications/GPIO/malveke_gb_cartridge/manifest.yml deleted file mode 100644 index 6f040c69..00000000 --- a/applications/GPIO/malveke_gb_cartridge/manifest.yml +++ /dev/null @@ -1,19 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/EstebanFuentealba/MALVEKE-Flipper-Zero.git - commit_sha: 8e3ad6ec8ab59631318ec0cd190943a26eace014 - subdir: flipper_companion_apps/applications/external/malveke_gb_cartridge -category: "GPIO" -short_description: | - MALVEKE app, its Interacts with GAME BOY and GAME BOY Color cartridges. You can Dump & Restore RAM and ROM. -id: "malveke_gb_cartridge" -description: "@README_catalog.md" -changelog: "@docs/changelog.md" -author: "Esteban Fuentealba" -icon: "icons/icon.png" -screenshots: - - ".flipcorg/gallery/1.png" - - ".flipcorg/gallery/2.png" - - ".flipcorg/gallery/3.png" - - ".flipcorg/gallery/4.png" \ No newline at end of file diff --git a/applications/GPIO/malveke_gb_link_camera/README.md b/applications/GPIO/malveke_gb_link_camera/README.md deleted file mode 100644 index 753cff86..00000000 --- a/applications/GPIO/malveke_gb_link_camera/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![malveke_gb_link_camera](https://catalog.flipperzero.one/application/malveke_gb_link_camera/widget)](https://catalog.flipperzero.one/application/malveke_gb_link_camera/page) \ No newline at end of file diff --git a/applications/GPIO/malveke_gb_link_camera/manifest.yml b/applications/GPIO/malveke_gb_link_camera/manifest.yml deleted file mode 100644 index 26578b47..00000000 --- a/applications/GPIO/malveke_gb_link_camera/manifest.yml +++ /dev/null @@ -1,17 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/EstebanFuentealba/MALVEKE-Flipper-Zero.git - commit_sha: fb7dba8c813a659c81fc37e5e7150c0b939fd4a7 - subdir: flipper_companion_apps/applications/external/malveke_gb_link_camera -category: "GPIO" -short_description: | - extract your GAME BOY Camera picture via WIFI, so they can be easily shared with your phone, tablet or pc. Easy to use, just hook up to your GAME BOY and print as usual, the device will store the images and share them on a web server via WIFI. You will need a printer cable or gameboy Color link cable. -id: "malveke_gb_link_camera" -description: "@README_catalog.md" -changelog: "@docs/changelog.md" -author: "Esteban Fuentealba" -icon: "icons/boilerplate_10px.png" -screenshots: - - ".flipcorg/gallery/1.png" - - ".flipcorg/gallery/2.png" \ No newline at end of file diff --git a/applications/GPIO/malveke_gb_live_camera/README.md b/applications/GPIO/malveke_gb_live_camera/README.md deleted file mode 100644 index b6f7e32e..00000000 --- a/applications/GPIO/malveke_gb_live_camera/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![malveke_gb_live_camera](https://catalog.flipperzero.one/application/malveke_gb_live_camera/widget)](https://catalog.flipperzero.one/application/malveke_gb_live_camera/page) \ No newline at end of file diff --git a/applications/GPIO/malveke_gb_live_camera/manifest.yml b/applications/GPIO/malveke_gb_live_camera/manifest.yml deleted file mode 100644 index 586286e4..00000000 --- a/applications/GPIO/malveke_gb_live_camera/manifest.yml +++ /dev/null @@ -1,18 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/EstebanFuentealba/MALVEKE-Flipper-Zero.git - commit_sha: fb7dba8c813a659c81fc37e5e7150c0b939fd4a7 - subdir: flipper_companion_apps/applications/external/malveke_gb_live_camera -category: "GPIO" -short_description: | - Insert a GAME BOY Camera cartridge, you can use it as a camera and take snapshots from the Flipper Zero. -id: "malveke_gb_live_camera" -description: "@README_catalog.md" -changelog: "@docs/changelog.md" -author: "Esteban Fuentealba" -icon: "icons/icon.png" -screenshots: - - ".flipcorg/gallery/1.png" - - ".flipcorg/gallery/2.png" - - ".flipcorg/gallery/3.png" \ No newline at end of file diff --git a/applications/GPIO/malveke_gb_photo/README.md b/applications/GPIO/malveke_gb_photo/README.md deleted file mode 100644 index c3676fc2..00000000 --- a/applications/GPIO/malveke_gb_photo/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![malveke_gb_photo](https://catalog.flipperzero.one/application/malveke_gb_photo/widget)](https://catalog.flipperzero.one/application/malveke_gb_photo/page) \ No newline at end of file diff --git a/applications/GPIO/malveke_gb_photo/manifest.yml b/applications/GPIO/malveke_gb_photo/manifest.yml deleted file mode 100644 index 208e92d3..00000000 --- a/applications/GPIO/malveke_gb_photo/manifest.yml +++ /dev/null @@ -1,19 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/EstebanFuentealba/MALVEKE-Flipper-Zero.git - commit_sha: 9da31fdcfbe5f23255cdc5800b85256ec431630e - subdir: flipper_companion_apps/applications/external/malveke_gb_photo -category: "GPIO" -short_description: | - Game Boy Camera save RAM photo to BMP from the Flipper Zero. -id: "malveke_gb_photo" -description: "@README_catalog.md" -changelog: "@docs/changelog.md" -author: "Esteban Fuentealba" -icon: "icons/icon_10px.png" -screenshots: - - ".flipcorg/gallery/1.png" - - ".flipcorg/gallery/2.png" - - ".flipcorg/gallery/3.png" - - ".flipcorg/gallery/4.png" \ No newline at end of file diff --git a/applications/GPIO/malveke_gba_cartridge/README.md b/applications/GPIO/malveke_gba_cartridge/README.md deleted file mode 100644 index 852f92fc..00000000 --- a/applications/GPIO/malveke_gba_cartridge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![malveke_gba_cartridge](https://catalog.flipperzero.one/application/malveke_gba_cartridge/widget)](https://catalog.flipperzero.one/application/malveke_gba_cartridge/page) \ No newline at end of file diff --git a/applications/GPIO/malveke_gba_cartridge/manifest.yml b/applications/GPIO/malveke_gba_cartridge/manifest.yml deleted file mode 100644 index 357f853a..00000000 --- a/applications/GPIO/malveke_gba_cartridge/manifest.yml +++ /dev/null @@ -1,18 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/EstebanFuentealba/MALVEKE-Flipper-Zero.git - commit_sha: 8e3ad6ec8ab59631318ec0cd190943a26eace014 - subdir: flipper_companion_apps/applications/external/malveke_gba_cartridge -category: "GPIO" -short_description: | - MALVEKE app, its Interacts with GAME BOY and GAME BOY ADVANCE cartridges. You can read Information. -id: "malveke_gba_cartridge" -description: "@README_catalog.md" -changelog: "@docs/changelog.md" -author: "Esteban Fuentealba" -icon: "icons/icon.png" -screenshots: - - ".flipcorg/gallery/1.png" - - ".flipcorg/gallery/2.png" - - ".flipcorg/gallery/3.png" \ No newline at end of file diff --git a/applications/GPIO/max31855/README.md b/applications/GPIO/max31855/README.md deleted file mode 100644 index 197755a2..00000000 --- a/applications/GPIO/max31855/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![max31855](https://catalog.flipperzero.one/application/max31855/widget)](https://catalog.flipperzero.one/application/max31855/page) \ No newline at end of file diff --git a/applications/GPIO/max31855/manifest.yml b/applications/GPIO/max31855/manifest.yml deleted file mode 100644 index 63e5a71e..00000000 --- a/applications/GPIO/max31855/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/skotopes/flipperzero_max31855.git - commit_sha: ff01fa5da25b06cb5394be710e3ffb0bad4c7ef7 -short_description: MAX31855 Thermocouple Sensor App -description: "@ReadMe.md" -changelog: "@ChangeLog.md" -screenshots: - - screenshots/0.png - - screenshots/1.png - - screenshots/2.png - - screenshots/3.png diff --git a/applications/GPIO/mh_z19/README.md b/applications/GPIO/mh_z19/README.md deleted file mode 100644 index bde5e375..00000000 --- a/applications/GPIO/mh_z19/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![mh_z19](https://catalog.flipperzero.one/application/mh_z19/widget)](https://catalog.flipperzero.one/application/mh_z19/page) \ No newline at end of file diff --git a/applications/GPIO/mh_z19/manifest.yml b/applications/GPIO/mh_z19/manifest.yml deleted file mode 100644 index 2a2f7618..00000000 --- a/applications/GPIO/mh_z19/manifest.yml +++ /dev/null @@ -1,15 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/meshchaninov/flipper-zero-mh-z19 - commit_sha: 6120a542290469ab81b1691fad5cbcb709ff0172 -short_description: | - Measuring carbon dioxide (CO2) with mh-z19 -description: | - Application for measuring carbon dioxide (CO2) with mh-z19 sensor and Flipper zero -changelog: "@CHANGELOG.md" -author: "@meshchaninov" -screenshots: - - assets/Ok.png - - assets/Very.png - diff --git a/applications/GPIO/mhz19_uart/README.md b/applications/GPIO/mhz19_uart/README.md deleted file mode 100644 index 8c01af5a..00000000 --- a/applications/GPIO/mhz19_uart/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![mhz19_uart](https://catalog.flipperzero.one/application/mhz19_uart/widget)](https://catalog.flipperzero.one/application/mhz19_uart/page) \ No newline at end of file diff --git a/applications/GPIO/mhz19_uart/manifest.yml b/applications/GPIO/mhz19_uart/manifest.yml deleted file mode 100644 index b7d12249..00000000 --- a/applications/GPIO/mhz19_uart/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/skotopes/flipperzero_mhz19_uart.git - commit_sha: 6c1addcda1fb0f33b01c7f574e35e7b3d6ea824b -description: "@ReadMe.md" -changelog: "@ChangeLog.md" -screenshots: - - screenshots/0.png - - screenshots/1.png - - screenshots/2.png diff --git a/applications/GPIO/moisture_sensor/manifest.yml b/applications/GPIO/moisture_sensor/manifest.yml deleted file mode 100644 index 5de82367..00000000 --- a/applications/GPIO/moisture_sensor/manifest.yml +++ /dev/null @@ -1,19 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/smallwat3r/flipperzero-moisture-sensor - commit_sha: 492098ba7d229fe52ea011ee6753ae957f0ed805 -name: Moisture Sensor -id: moisture_sensor -author: smallwat3r -category: GPIO -version: "1.0" -icon: assets/icons/icon.png -targets: - - all -short_description: Read values from a capacitive moisture sensor v1.2 -description: "@assets/README_catalog.md" -changelog: "@changelog.md" -screenshots: - - assets/screenshots/sensor.png - - assets/screenshots/calibration.png diff --git a/applications/GPIO/nearby_files/manifest.yml b/applications/GPIO/nearby_files/manifest.yml deleted file mode 100644 index 913bd48f..00000000 --- a/applications/GPIO/nearby_files/manifest.yml +++ /dev/null @@ -1,18 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Stichoza/flipper-nearby-files.git - commit_sha: 9eba57bccd79f15b1e90cbdb914e5671071ec192 -name: "Nearby Files" -id: "nearby_files" -version: "1.5" -author: "@Stichoza" -short_description: "GPS-enabled file browser that displays files sorted by distance from your current location." -description: "@.catalog/README.md" -changelog: "@.catalog/CHANGELOG.md" -category: "GPIO" -screenshots: - - ".catalog/screenshots/screenshot3.png" - - ".catalog/screenshots/screenshot1.png" - - ".catalog/screenshots/screenshot2.png" -icon: "nearby_files_10px.png" diff --git a/applications/GPIO/noptel_lrf_sampler/README.md b/applications/GPIO/noptel_lrf_sampler/README.md deleted file mode 100644 index be0d0d17..00000000 --- a/applications/GPIO/noptel_lrf_sampler/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![noptel_lrf_sampler](https://catalog.flipperzero.one/application/noptel_lrf_sampler/widget)](https://catalog.flipperzero.one/application/noptel_lrf_sampler/page) \ No newline at end of file diff --git a/applications/GPIO/noptel_lrf_sampler/manifest.yml b/applications/GPIO/noptel_lrf_sampler/manifest.yml deleted file mode 100644 index 80fa367e..00000000 --- a/applications/GPIO/noptel_lrf_sampler/manifest.yml +++ /dev/null @@ -1,19 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Giraut/flipper_zero_noptel_lrf_sampler - commit_sha: 6b78ca9018d64372db6ca4af2831eda7b57526a7 -short_description: Noptel LRF rangefinder sampler -description: "Noptel LRF rangefinder sampler app for the Flipper Zero" -changelog: "@Changelog.md" -screenshots: - - screenshots/0-sample_buffering.png - - screenshots/1-sample_cmm.png - - screenshots/2-lrf_information.png - - screenshots/3-laser_testing.png - - screenshots/4-usb_serial_passthrough1.png - - screenshots/5-usb_serial_passthrough2.png - - screenshots/6-splash_version.png - - screenshots/7-gpio_pin_connections.png - - screenshots/8-save_lrf_diagnostic.png - - screenshots/9-configuration_menu.png diff --git a/applications/GPIO/nrf24channelscanner/README.md b/applications/GPIO/nrf24channelscanner/README.md deleted file mode 100644 index 741f08d7..00000000 --- a/applications/GPIO/nrf24channelscanner/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![nrf24channelscanner](https://catalog.flipperzero.one/application/nrf24channelscanner/widget)](https://catalog.flipperzero.one/application/nrf24channelscanner/page) \ No newline at end of file diff --git a/applications/GPIO/nrf24channelscanner/manifest.yml b/applications/GPIO/nrf24channelscanner/manifest.yml deleted file mode 100644 index a8b7b5c0..00000000 --- a/applications/GPIO/nrf24channelscanner/manifest.yml +++ /dev/null @@ -1,17 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/htotoo/NRF24ChannelScanner - commit_sha: 6bd1a9362a22d580a3ec1e2490cea4eab1103d6b - subdir: NRF24ChannelScanner -category: GPIO -short_description: | - Scanning channels for usage with NRF24 -description: | - Application for scanning channels for usage data with NRF24 module and Flipper zero -changelog: "v1.3 - Added infinite scan option, and 5V auto on for some modules" -author: "@htotoo" -screenshots: - - "./.flipcorg/gallery/screen_open.png" - - "./.flipcorg/gallery/screen1.png" - diff --git a/applications/GPIO/pokemon/README.md b/applications/GPIO/pokemon/README.md deleted file mode 100644 index 505672cc..00000000 --- a/applications/GPIO/pokemon/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![pokemon](https://catalog.flipperzero.one/application/pokemon/widget)](https://catalog.flipperzero.one/application/pokemon/page) \ No newline at end of file diff --git a/applications/GPIO/pokemon/manifest.yml b/applications/GPIO/pokemon/manifest.yml deleted file mode 100644 index d36e1813..00000000 --- a/applications/GPIO/pokemon/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/kbembedded/Flipper-Zero-Game-Boy-Pokemon-Trading - commit_sha: 8769074c727ef3fa2da83e30daaf1aa964349c7e -description: "@README_catalog.md" -changelog: "@changelog.md" -screenshots: - - ".flipcorg/gallery/1.png" - - ".flipcorg/gallery/2.png" - - ".flipcorg/gallery/3.png" - - ".flipcorg/gallery/4.png" - - ".flipcorg/gallery/5.png" - - ".flipcorg/gallery/6.png" diff --git a/applications/GPIO/radar_scanner/README.md b/applications/GPIO/radar_scanner/README.md deleted file mode 100644 index 8cc9a62c..00000000 --- a/applications/GPIO/radar_scanner/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![radar_scanner](https://catalog.flipperzero.one/application/radar_scanner/widget)](https://catalog.flipperzero.one/application/radar_scanner/page) \ No newline at end of file diff --git a/applications/GPIO/radar_scanner/manifest.yml b/applications/GPIO/radar_scanner/manifest.yml deleted file mode 100644 index 55d8a7ec..00000000 --- a/applications/GPIO/radar_scanner/manifest.yml +++ /dev/null @@ -1,39 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/MatthewKuKanich/flipper-radar.git - commit_sha: 1c1dc75dcec0acb79ee7445192735e2c72fa81a6 -id: "radar_scanner" -category: "GPIO" -short_description: "Microwave Radar Scanner" -description: | - The Flipper Zero Radar Scanner is an application designed for the Flipper Zeros GPIO capabilities, utilizing the RCWL-0516 Microwave Radar module to detect the presence and movement of living beings or people. This powerful radar module is capable of detecting movement at a range of approximately 8 meters, depending on the environment, and can even detect humans through walls, ceilings, and floors up to 5-6 meters away. - Features - Easy Hardware Setup- Connect the RCWL-0516 module to your Flipper Zero by supplying 5 volts to the VIN pin with ground connected. The OUT pin of the module should be connected to Pin 7 on the Flipper Zero. Be mindful of 5v and GND as reversing these will damage the radar module. - Bi-Directional Detection- The RCWL-0516 module is bi-directional, meaning it can detect movement from both the front and back sides. The front side with components is the primary detection side and should be oriented away from you. You can modify the detection range by adding metal shielding to focus detection where the Flipper is pointing. - Adjustable Sensitivity- If the sensitivity is too high, you can solder a resistor to the modules pad to reduce it, allowing you to fine-tune the detection sensitivity to your needs. - User-Friendly Interface- The app starts in an inactive or standby state. Press the OK button to activate it. The Flipper display will show Active, and the app will begin monitoring for movement. - Auto 5v - No need to manually turn on and off GPIO 5v - Real-Time Feedback- - When movement is detected, the text No presence will change to Presence detected. - An alarm will sound to alert you. - The LED will change from green (clear) to red (detected). - The Flipper will vibrate twice to notify you. - - Muted Mode- Press the Down button to enter muted mode. In this mode, detection still triggers text changes, LED status, and vibrations, but there is no sound. You can toggle this mode on and off. - - Pause and Resume- Press the OK button to pause detection and return the Flipper to standby mode. Press it again to resume monitoring for movement. - - Alt-mode- Use without making a module! Simply buy and RCWL-0516 radar unit and solder the headers, thats it! In app press the right key to change to the alternate pinout. - - Note- - The range and detection capabilities may vary depending on environmental factors. - Experiment with sensitivity adjustments and metal shielding to optimize detection for your specific use case. - Be aware of privacy and legal considerations when using radar-based detection systems. - Enjoy your Flipper Zero Radar Scanner and explore its various applications! -changelog: "v2.0 - Big update" -author: "@MatthewKuKanich" -screenshots: - - "./screenshots/flp0.png" - - "./screenshots/flp1.png" - - "./screenshots/flp2.png" diff --git a/applications/GPIO/radsens/README.md b/applications/GPIO/radsens/README.md deleted file mode 100644 index c8478e07..00000000 --- a/applications/GPIO/radsens/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![radsens](https://catalog.flipperzero.one/application/radsens/widget)](https://catalog.flipperzero.one/application/radsens/page) \ No newline at end of file diff --git a/applications/GPIO/radsens/manifest.yml b/applications/GPIO/radsens/manifest.yml deleted file mode 100644 index 5c34a30b..00000000 --- a/applications/GPIO/radsens/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/sionyx/flipper_radsens.git - commit_sha: 23f7b6ea46d6e670195db1bc40a63da4e5be54ef -description: "App for RadSense radiation measurement module by ClimateGuard" -short_description: "App for RadSens module" -changelog: "v1.0: First release" -author: "@sionyx" -screenshots: - - "./images/meas_mode.png" - - "./images/plot_mode.png" diff --git a/applications/GPIO/sd_spi_app/README.md b/applications/GPIO/sd_spi_app/README.md deleted file mode 100644 index d5957ac8..00000000 --- a/applications/GPIO/sd_spi_app/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![sd_spi_app](https://catalog.flipperzero.one/application/sd_spi_app/widget)](https://catalog.flipperzero.one/application/sd_spi_app/page) \ No newline at end of file diff --git a/applications/GPIO/sd_spi_app/manifest.yml b/applications/GPIO/sd_spi_app/manifest.yml deleted file mode 100644 index 77dc30f5..00000000 --- a/applications/GPIO/sd_spi_app/manifest.yml +++ /dev/null @@ -1,15 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Gl1tchub/Flipperzero-SD-SPI.git - commit_sha: afed9816e5c1fae868e7267c9ad5c665d2372ab8 - subdir: sd_spi -description: "Lock and Unlock SD card / Micro SD card through SPI protocol." -version: "0.5" -changelog: "latest API support" -author: "Gl1tchub" -screenshots: - - screenshots/flp0.png - - screenshots/flp1.png - - screenshots/flp2.png - - screenshots/flp3.png diff --git a/applications/GPIO/servotester/README.md b/applications/GPIO/servotester/README.md deleted file mode 100644 index c513ddc4..00000000 --- a/applications/GPIO/servotester/README.md +++ /dev/null @@ -1 +0,0 @@ -Simple servo tester application with PMW output on pin A7. diff --git a/applications/GPIO/servotester/manifest.yml b/applications/GPIO/servotester/manifest.yml deleted file mode 100644 index 462553b5..00000000 --- a/applications/GPIO/servotester/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/ThunderFly-aerospace/flipper-servotester.git - commit_sha: 0b89aa97899be7a5592493a68c8a5c19bc6d05d6 - subdir: servotester -description: "../@README.md" -changelog: "../@changelog.md" -screenshots: - - "./assets/Servo_Tester_Auto_mode.png" - - "./assets/Servo_Tester_Center_mode.png" - - "./assets/Servo_Tester_Manual_mode.png" diff --git a/applications/GPIO/servotesterapp/README.md b/applications/GPIO/servotesterapp/README.md deleted file mode 100644 index 018dc1e0..00000000 --- a/applications/GPIO/servotesterapp/README.md +++ /dev/null @@ -1 +0,0 @@ -An alternative servo tester app with a different logic than its `servotester` predecessor variant. diff --git a/applications/GPIO/servotesterapp/manifest.yml b/applications/GPIO/servotesterapp/manifest.yml deleted file mode 100644 index 073ba2bc..00000000 --- a/applications/GPIO/servotesterapp/manifest.yml +++ /dev/null @@ -1,10 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/kaklik/ServoTesterApp.git - commit_sha: 7f3eb5fe339f30c72b893c39d5de1374dbb44625 -description: "@README.md" -changelog: "@changelog.md" -screenshots: - - "./ServoTesterApp1.png" - - "./ServoTesterApp2.png" diff --git a/applications/GPIO/signal_generator/README.md b/applications/GPIO/signal_generator/README.md deleted file mode 100644 index f6dd753f..00000000 --- a/applications/GPIO/signal_generator/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![signal_generator](https://catalog.flipperzero.one/application/signal_generator/widget)](https://catalog.flipperzero.one/application/signal_generator/page) \ No newline at end of file diff --git a/applications/GPIO/signal_generator/manifest.yml b/applications/GPIO/signal_generator/manifest.yml deleted file mode 100644 index 1077afeb..00000000 --- a/applications/GPIO/signal_generator/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/flipperdevices/flipperzero-good-faps.git - commit_sha: b1dca2058d92504562c40fca9840bcd95843c698 - subdir: signal_generator -description: "@.catalog/README.md" -changelog: "@.catalog/changelog.md" -author: "@nminaylov" -screenshots: - - ".catalog/screenshots/1.png" - - ".catalog/screenshots/2.png" - - ".catalog/screenshots/3.png" diff --git a/applications/GPIO/simultaneous_rfid_reader/README.md b/applications/GPIO/simultaneous_rfid_reader/README.md deleted file mode 100644 index 23a101f9..00000000 --- a/applications/GPIO/simultaneous_rfid_reader/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![simultaneous_rfid_reader](https://catalog.flipperzero.one/application/simultaneous_rfid_reader/widget)](https://catalog.flipperzero.one/application/simultaneous_rfid_reader/page) \ No newline at end of file diff --git a/applications/GPIO/simultaneous_rfid_reader/manifest.yml b/applications/GPIO/simultaneous_rfid_reader/manifest.yml deleted file mode 100644 index 6a0cf76d..00000000 --- a/applications/GPIO/simultaneous_rfid_reader/manifest.yml +++ /dev/null @@ -1,28 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/haffnerriley/Simultaneous-UHF-RFID-FlipperZero.git - commit_sha: 0a314e419ea2a8af6023f7e85a3ec197fa7b125b - subdir: simultaneous_rfid_reader -description: | - This app is designed to - work with the M6e Nano, - M7E Hecto, or YRM100 - UHF RFID Readers and the - Flipper Zero. - This app supports reading - up to 150 tags per second, - writing to tags (EPC, TID, - Reserved, and User Memory - Banks), viewing all tag - information, saving tags, - and more! -changelog: "@.catalog/CHANGELOG.md" -author: "@Haffnerriley" -screenshots: - - ".catalog/screenshots/uhf-rfid-m6e-main-menu.png" - - ".catalog/screenshots/read-screen.png" - - ".catalog/screenshots/write-screen.png" - - ".catalog/screenshots/tag-data-screen.png" - - ".catalog/screenshots/lock-screen.png" - - ".catalog/screenshots/kill-screen.png" \ No newline at end of file diff --git a/applications/GPIO/sio2flip/README.md b/applications/GPIO/sio2flip/README.md deleted file mode 100644 index 239952e8..00000000 --- a/applications/GPIO/sio2flip/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![sio2flip](https://catalog.flipperzero.one/application/sio2flip/widget)](https://catalog.flipperzero.one/application/sio2flip/page) \ No newline at end of file diff --git a/applications/GPIO/sio2flip/manifest.yml b/applications/GPIO/sio2flip/manifest.yml deleted file mode 100644 index e7f3e030..00000000 --- a/applications/GPIO/sio2flip/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/cepetr/sio2flip.git - commit_sha: a3df8a032e132f0a07a396cb39d37b3ed49343d0 -description: "@description.md" -changelog: "@CHANGELOG.md" -screenshots: - - "./screenshots/screenshot_fdd.png" - - "./screenshots/screenshot_xex_loader.png" - - "./screenshots/screenshot_app_config.png" - - "./screenshots/screenshot_fdd_config.png" \ No newline at end of file diff --git a/applications/GPIO/spi_mem_manager/README.md b/applications/GPIO/spi_mem_manager/README.md deleted file mode 100644 index 753e06b2..00000000 --- a/applications/GPIO/spi_mem_manager/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![spi_mem_manager](https://catalog.flipperzero.one/application/spi_mem_manager/widget)](https://catalog.flipperzero.one/application/spi_mem_manager/page) \ No newline at end of file diff --git a/applications/GPIO/spi_mem_manager/manifest.yml b/applications/GPIO/spi_mem_manager/manifest.yml deleted file mode 100644 index 8a8e4ab0..00000000 --- a/applications/GPIO/spi_mem_manager/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/flipperdevices/flipperzero-good-faps.git - commit_sha: b791dea234f855155027bb46215dc60f3ddeb243 - subdir: spi_mem_manager -description: "@.catalog/README.md" -changelog: "@.catalog/changelog.md" -author: "@drunkbatya" -screenshots: - - ".catalog/screenshots/1.png" - - ".catalog/screenshots/2.png" - - ".catalog/screenshots/3.png" - - ".catalog/screenshots/4.png" diff --git a/applications/GPIO/stepcounter/README.md b/applications/GPIO/stepcounter/README.md deleted file mode 100644 index b516fac9..00000000 --- a/applications/GPIO/stepcounter/README.md +++ /dev/null @@ -1 +0,0 @@ -# Status diff --git a/applications/GPIO/stepcounter/manifest.yml b/applications/GPIO/stepcounter/manifest.yml deleted file mode 100644 index 2bde345a..00000000 --- a/applications/GPIO/stepcounter/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/grugnoymeme/flipperzero-StepCounter-fap.git - commit_sha: 2b6976e0f6b88d195d1aebe1d8f9d07c390d02ce -id: "stepcounter" -category: "GPIO" -short_description: "Step Counter/Pedometer using Memsic2125 module." -description: "./docs/README.md" -changelog: "v1.0 - Initial release" -author: "47lecoste a.k.a. grugnoymeme" -screenshots: - - "./images/menu_view.png" - - "./images/main_screen.png" diff --git a/applications/GPIO/swd_probe/README.md b/applications/GPIO/swd_probe/README.md deleted file mode 100644 index e13aa242..00000000 --- a/applications/GPIO/swd_probe/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![swd_probe](https://catalog.flipperzero.one/application/swd_probe/widget)](https://catalog.flipperzero.one/application/swd_probe/page) \ No newline at end of file diff --git a/applications/GPIO/swd_probe/manifest.yml b/applications/GPIO/swd_probe/manifest.yml deleted file mode 100644 index c7d7b2e0..00000000 --- a/applications/GPIO/swd_probe/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: base_pack/swd_probe -description: "ARM SWD (Single Wire Debug) Probe" -changelog: "v1.0 - Initial release, v1.1 - Sync Updates, v1.2 - Sync updates and latest API support, v1.3 - Latest API support, v1.4 - Sync with latest version" -author: "@g3gg0 & (fixes by @xMasterX)" -screenshots: - - "./img/1.png" diff --git a/applications/GPIO/tesla_fsd/manifest.yml b/applications/GPIO/tesla_mod/manifest.yml similarity index 100% rename from applications/GPIO/tesla_fsd/manifest.yml rename to applications/GPIO/tesla_mod/manifest.yml diff --git a/applications/GPIO/uart_terminal/README.md b/applications/GPIO/uart_terminal/README.md deleted file mode 100644 index 4010559c..00000000 --- a/applications/GPIO/uart_terminal/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![uart_terminal](https://catalog.flipperzero.one/application/uart_terminal/widget)](https://catalog.flipperzero.one/application/uart_terminal/page) \ No newline at end of file diff --git a/applications/GPIO/uart_terminal/manifest.yml b/applications/GPIO/uart_terminal/manifest.yml deleted file mode 100644 index 4e66a5a3..00000000 --- a/applications/GPIO/uart_terminal/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: base_pack/uart_terminal -description: "@README-catalog.md" -changelog: "v1.0 - Initial release, v1.1 - Description update, v1.2 - More baudrates, v1.3 - HEX Mode, v1.4 - Fixes for latest API, v1.5 - Sync updates and latest API support, v1.6 - Fixes and improvements, v1.7 - Sync with latest version" -author: "@cool4uma & @rnadyrshin & (some fixes by @xMasterX)" -screenshots: - - "./img/2.png" - - "./img/3.png" - - "./img/1.png" diff --git a/applications/GPIO/ublox/README.md b/applications/GPIO/ublox/README.md deleted file mode 100644 index a2350f38..00000000 --- a/applications/GPIO/ublox/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![ublox](https://catalog.flipperzero.one/application/ublox/widget)](https://catalog.flipperzero.one/application/ublox/page) \ No newline at end of file diff --git a/applications/GPIO/ublox/manifest.yml b/applications/GPIO/ublox/manifest.yml deleted file mode 100644 index 6ea42e95..00000000 --- a/applications/GPIO/ublox/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/liamhays/ublox.git - commit_sha: 1f47a5a8badd74a1d079eb7f0d1b10fb701e5fac -description: "@apphub_readme.md" -changelog: "@changelog.md" -screenshots: - - screenshots/menu.png - - screenshots/data_display_handheld.png - - screenshots/data_display_car.png - - screenshots/sync_time.png diff --git a/applications/GPIO/uhf_rfid/README.md b/applications/GPIO/uhf_rfid/README.md deleted file mode 100644 index 52a80d26..00000000 --- a/applications/GPIO/uhf_rfid/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![uhf_rfid](https://catalog.flipperzero.one/application/uhf_rfid/widget)](https://catalog.flipperzero.one/application/uhf_rfid/page) \ No newline at end of file diff --git a/applications/GPIO/uhf_rfid/manifest.yml b/applications/GPIO/uhf_rfid/manifest.yml deleted file mode 100644 index 02f79d50..00000000 --- a/applications/GPIO/uhf_rfid/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: a2004a3539c50ced20f6f24e61ba17c1dd86460b - subdir: apps_source_code/uhf_rfid -description: "@./catalog/docs/Readme.md" -changelog: "@./catalog/docs/Changelog.md" -screenshots: - - "./catalog/screenshots/1.png" - - "./catalog/screenshots/2.png" - - "./catalog/screenshots/3.png" - - "./catalog/screenshots/4.png" - diff --git a/applications/GPIO/unitemp/README.md b/applications/GPIO/unitemp/README.md deleted file mode 100644 index c9d90516..00000000 --- a/applications/GPIO/unitemp/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![unitemp](https://catalog.flipperzero.one/application/unitemp/widget)](https://catalog.flipperzero.one/application/unitemp/page) \ No newline at end of file diff --git a/applications/GPIO/unitemp/manifest.yml b/applications/GPIO/unitemp/manifest.yml deleted file mode 100644 index ca6517cf..00000000 --- a/applications/GPIO/unitemp/manifest.yml +++ /dev/null @@ -1,19 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/quen0n/unitemp-flipperzero.git - commit_sha: ee18e81f0fe4e1a9a0c42fcb5125a61a6db9b839 -category: "GPIO" -description: "@README_CATALOG.md" -changelog: "@CHANGELOG.md" -version: "2.0" -screenshots: - - ".github/images/screenshots/1.png" - - ".github/images/screenshots/2.png" - - ".github/images/screenshots/3.png" - - ".github/images/screenshots/4.png" - - ".github/images/screenshots/5.png" - - ".github/images/screenshots/6.png" - - ".github/images/screenshots/7.png" - - ".github/images/screenshots/8.png" - - ".github/images/screenshots/9.png" diff --git a/applications/GPIO/usping/README.md b/applications/GPIO/usping/README.md deleted file mode 100644 index faa5385e..00000000 --- a/applications/GPIO/usping/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![usping](https://catalog.flipperzero.one/application/usping/widget)](https://catalog.flipperzero.one/application/usping/page) \ No newline at end of file diff --git a/applications/GPIO/usping/manifest.yml b/applications/GPIO/usping/manifest.yml deleted file mode 100644 index 5ffadd25..00000000 --- a/applications/GPIO/usping/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: a2004a3539c50ced20f6f24e61ba17c1dd86460b - subdir: apps_source_code/usping -description: "@./catalog/docs/Readme.md" -changelog: "@./catalog/docs/Changelog.md" -screenshots: - - "./catalog/screenshots/1.png" - - "./catalog/screenshots/2.png" - diff --git a/applications/GPIO/uv_meter_as7331/manifest.yml b/applications/GPIO/uv_meter_as7331/manifest.yml deleted file mode 100644 index c96df6bd..00000000 --- a/applications/GPIO/uv_meter_as7331/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/michaelbaisch/uv_meter.git - commit_sha: 4c32e20ca842201191fb77ded98b1c0b8dbc81f0 -description: "@DESCRIPTION.md" -changelog: "@CHANGELOG.md" -screenshots: - - screenshots/data_1.png - - screenshots/data_2.png - - screenshots/wiring.png - - screenshots/settings.png diff --git a/applications/GPIO/veml7700luxmeter/manifest.yml b/applications/GPIO/veml7700luxmeter/manifest.yml deleted file mode 100644 index 977bb8bc..00000000 --- a/applications/GPIO/veml7700luxmeter/manifest.yml +++ /dev/null @@ -1,22 +0,0 @@ -id: "veml7700luxmeter" -name: "VEML7700 Lux Meter" -author: "@Dr.Mosfet" -category: "GPIO" -version: "1.1" -targets: - - "all" -sourcecode: - type: git - location: - origin: https://github.com/kamylwnb/Flipper-zero-app-VEML7700 - commit_sha: f6de3e24b0fc9c21f0db008b457b82b3d45b5a59 - subdir: . -short_description: "Lux meter app using VEML7700 sensor for Flipper Zero" -description: | - The VEML7700 Lux Meter app measures ambient light in lux using the VEML7700 sensor via I2C and displays the value on the Flipper Zero screen. - Requires a VEML7700 sensor connected via I2C to the Flipper Zero GPIO pins. -changelog: "docs/CHANGELOG.md" -screenshots: - - screenshots/1.png - - screenshots/2.png - - screenshots/3.png diff --git a/applications/GPIO/vgm_air_mouse/README.md b/applications/GPIO/vgm_air_mouse/README.md deleted file mode 100644 index d2d8361c..00000000 --- a/applications/GPIO/vgm_air_mouse/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![vgm_air_mouse](https://catalog.flipperzero.one/application/vgm_air_mouse/widget)](https://catalog.flipperzero.one/application/vgm_air_mouse/page) \ No newline at end of file diff --git a/applications/GPIO/vgm_air_mouse/manifest.yml b/applications/GPIO/vgm_air_mouse/manifest.yml deleted file mode 100644 index 20026ee8..00000000 --- a/applications/GPIO/vgm_air_mouse/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/flipperdevices/flipperzero-good-faps.git - commit_sha: b791dea234f855155027bb46215dc60f3ddeb243 - subdir: air_mouse -description: "@.catalog/README.md" -changelog: "@.catalog/CHANGELOG.md" -author: "@nminaylov" -screenshots: - - ".catalog/screenshots/1.png" - - ".catalog/screenshots/2.png" diff --git a/applications/GPIO/vgm_game_remote/README.md b/applications/GPIO/vgm_game_remote/README.md deleted file mode 100644 index 52d1795d..00000000 --- a/applications/GPIO/vgm_game_remote/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![vgm_game_remote](https://catalog.flipperzero.one/application/vgm_game_remote/widget)](https://catalog.flipperzero.one/application/vgm_game_remote/page) \ No newline at end of file diff --git a/applications/GPIO/vgm_game_remote/manifest.yml b/applications/GPIO/vgm_game_remote/manifest.yml deleted file mode 100644 index ba329bb8..00000000 --- a/applications/GPIO/vgm_game_remote/manifest.yml +++ /dev/null @@ -1,18 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jblanked/pico-game-engine.git - commit_sha: 7b13e1d2724b7c4fcb22ab0a77313fe5bdc1d2e4 - subdir: src/FlipperZeroApp -short_description: "Companion app for the VGM Game Engine" -description: "This app allows you to use your Flipper Zero's d-pad as input in games created with the VGM Game Engine." -changelog: "v1.0: Initial release v1.1: Fixed UART button input" -author: "JBlanked" -name: "[VGM] Game Remote" -version: "1.1" -id: "vgm_game_remote" -category: "GPIO" -targets: ['all'] -icon: "app.png" -screenshots: - - "assets/main.png" \ No newline at end of file diff --git a/applications/GPIO/web_crawler/README.md b/applications/GPIO/web_crawler/README.md deleted file mode 100644 index c53e4ffd..00000000 --- a/applications/GPIO/web_crawler/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![web_crawler](https://catalog.flipperzero.one/application/web_crawler/widget)](https://catalog.flipperzero.one/application/web_crawler/page) \ No newline at end of file diff --git a/applications/GPIO/web_crawler/manifest.yml b/applications/GPIO/web_crawler/manifest.yml deleted file mode 100644 index 4c7a7c46..00000000 --- a/applications/GPIO/web_crawler/manifest.yml +++ /dev/null @@ -1,19 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jblanked/WebCrawler-FlipperZero.git - commit_sha: 0c1115456b10f34cea23cc6640241268b111d90d -short_description: "Browse the web, fetch API data, and more." -description: "@README.md" -changelog: "@CHANGELOG.md" -author: "JBlanked" -name: "Web Crawler" -version: "1.0.1" -id: "web_crawler" -category: "GPIO" -targets: ['all'] -icon: "app.png" -screenshots: - - "assets/01-request.png" - - "assets/02-main.png" - - "assets/03-path.png" \ No newline at end of file diff --git a/applications/GPIO/wiegand_reader/README.md b/applications/GPIO/wiegand_reader/README.md deleted file mode 100644 index 36aa1e85..00000000 --- a/applications/GPIO/wiegand_reader/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![wiegand_reader](https://catalog.flipperzero.one/application/wiegand_reader/widget)](https://catalog.flipperzero.one/application/wiegand_reader/page) \ No newline at end of file diff --git a/applications/GPIO/wiegand_reader/manifest.yml b/applications/GPIO/wiegand_reader/manifest.yml deleted file mode 100644 index 126368c5..00000000 --- a/applications/GPIO/wiegand_reader/manifest.yml +++ /dev/null @@ -1,19 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jamisonderek/flipper-zero-tutorials - commit_sha: ef5dfb57fbb559fe760c15dcfc6c4b6abbd19b15 - subdir: gpio/wiegand -category: "GPIO" -short_description: "Application for reading and sending Wiegand signals. Connect D0, D1, GND wires to Flipper Zero to read signals." -id: "wiegand_reader" -description: "@docs/README.md" -changelog: "@docs/CHANGELOG.md" -author: "Derek Jamison (@CodeAllNight)" -version: "1.4" -screenshots: - - "docs/image0.png" - - "docs/image1.png" - - "docs/image2.png" - - "docs/image3.png" - - "docs/image4.png" diff --git a/applications/GPIO/wire_tester/README.md b/applications/GPIO/wire_tester/README.md deleted file mode 100644 index 257fe856..00000000 --- a/applications/GPIO/wire_tester/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![wire_tester](https://catalog.flipperzero.one/application/wire_tester/widget)](https://catalog.flipperzero.one/application/wire_tester/page) \ No newline at end of file diff --git a/applications/GPIO/wire_tester/manifest.yml b/applications/GPIO/wire_tester/manifest.yml deleted file mode 100644 index 73c6fc1c..00000000 --- a/applications/GPIO/wire_tester/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: a2004a3539c50ced20f6f24e61ba17c1dd86460b - subdir: apps_source_code/wire_tester -description: "@./catalog/docs/Readme.md" -changelog: "@./catalog/docs/Changelog.md" -screenshots: - - "./catalog/screenshots/1.png" - diff --git a/applications/GPIO/ws2812b_tester_app/README.md b/applications/GPIO/ws2812b_tester_app/README.md deleted file mode 100644 index 3b9972d5..00000000 --- a/applications/GPIO/ws2812b_tester_app/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![ws2812b_tester_app](https://catalog.flipperzero.one/application/ws2812b_tester_app/widget)](https://catalog.flipperzero.one/application/ws2812b_tester_app/page) \ No newline at end of file diff --git a/applications/GPIO/ws2812b_tester_app/manifest.yml b/applications/GPIO/ws2812b_tester_app/manifest.yml deleted file mode 100644 index 3d0f7e87..00000000 --- a/applications/GPIO/ws2812b_tester_app/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: a2004a3539c50ced20f6f24e61ba17c1dd86460b - subdir: apps_source_code/ws2812b_tester -description: "@./catalog/docs/Readme.md" -changelog: "@./catalog/docs/Changelog.md" -screenshots: - - "./catalog/screenshots/1.png" - - "./catalog/screenshots/2.png" - - "./catalog/screenshots/3.png" - diff --git a/applications/GPIO/zeitraffer/README.md b/applications/GPIO/zeitraffer/README.md deleted file mode 100644 index 795a5659..00000000 --- a/applications/GPIO/zeitraffer/README.md +++ /dev/null @@ -1,27 +0,0 @@ -##Simple timelapse/intervalometer app for Flipper Zero, works via GPIO pins. - -[![zeitraffer](https://catalog.flipperzero.one/application/zeitraffer/widget)](https://catalog.flipperzero.one/application/zeitraffer/page) - -## Control: - - Up and down - time. - - Left and right - number of frames - - Long press arrows - ±10 frames/seconds - - OK - start/pause - - Long press OK - turn on/off the backlight - - Back - reset - - Long press back - exit - -1 frame - simple timer, 0 frames - infinite mode, -1 frames - BULB mode - -When the timer is running, all buttons are blocked except OK. - -## What you need: - - two EL817C optocouplers - - pin header connector 1x3 2,54mm male - - some wire - - heat shrink - - camera remote connector - -## How to assemble -Take optocouplers, connect according to the scheme: https://theageoflove.ru/uploads/2022/11/camera_cable_en.jpg -Camera pinout can be found here: https://www.doc-diy.net/photo/remote_pinout/ diff --git a/applications/GPIO/zeitraffer/manifest.yml b/applications/GPIO/zeitraffer/manifest.yml deleted file mode 100644 index 07c1c1e4..00000000 --- a/applications/GPIO/zeitraffer/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/theageoflove/flipperzero-zeitraffer.git - commit_sha: 20dcb663bc23e24dce16b8d68398979a69514ed5 -description: "@./.catalog/README.md" -changelog: "v1.2 - Compatibility to API 65.0" -author: "Aurelius Rosenbaum" -version: "1.2" -screenshots: - - "./.catalog/001.png" - - "./.catalog/002.png" - - "./.catalog/003.png" - - "./.catalog/004.png" diff --git a/applications/Games/.gitkeep b/applications/Games/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/applications/Games/4inrow/README.md b/applications/Games/4inrow/README.md deleted file mode 100644 index 1875d221..00000000 --- a/applications/Games/4inrow/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![4inrow](https://catalog.flipperzero.one/application/4inrow/widget)](https://catalog.flipperzero.one/application/4inrow/page) \ No newline at end of file diff --git a/applications/Games/4inrow/manifest.yml b/applications/Games/4inrow/manifest.yml deleted file mode 100644 index 3197329c..00000000 --- a/applications/Games/4inrow/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/4inrow_game -description: "4 in row Game" -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "leo-need-more-coffee" -screenshots: - - "./img/2.png" - - "./img/3.png" - - "./img/1.png" diff --git a/applications/Games/air_arkanoid/README.md b/applications/Games/air_arkanoid/README.md deleted file mode 100644 index 7e392f7d..00000000 --- a/applications/Games/air_arkanoid/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![air_arkanoid](https://catalog.flipperzero.one/application/air_arkanoid/widget)](https://catalog.flipperzero.one/application/air_arkanoid/page) diff --git a/applications/Games/air_arkanoid/manifest.yml b/applications/Games/air_arkanoid/manifest.yml deleted file mode 100644 index 03688966..00000000 --- a/applications/Games/air_arkanoid/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/flipperdevices/flipperzero-good-faps.git - commit_sha: 128c33a745761ace9e7686582d9d57c4efcc5edd - subdir: air_arkanoid -description: "@.catalog/README.md" -changelog: "@.catalog/CHANGELOG.md" -author: "@DrZlo13" -screenshots: - - ".catalog/screenshots/1.png" - - ".catalog/screenshots/2.png" - - ".catalog/screenshots/3.png" diff --git a/applications/Games/air_labyrinth/README.md b/applications/Games/air_labyrinth/README.md deleted file mode 100644 index 84e483e4..00000000 --- a/applications/Games/air_labyrinth/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Air Labyrinth - -This is a simple game where you have to navigate a ball through a maze. The game is controlled by tilting the Flipper Zero with a Video Game Module attached. You can also play the game using the Flipper Zero's d-pad. - -## How to play - -1. Attach the video game module to the Flipper Zero. -2. Open the Air Labyrinth game (`Apps`/`Games`/`Air Labyrinth`). -3. Tilt the Flipper Zero to move the ball through the maze. - -## Version history -- 0.1.0 - Initial release by @CodeAllNight (https://youtube.com/@MrDerekJamison/about) - -## Other - -This game was made based on the [air_arkanoid](https://github.com/flipperdevices/flipperzero-good-faps/tree/dev/air_arkanoid) and [flipperzero-game-engine-example](https://github.com/flipperdevices/flipperzero-game-engine-example) projects. Thanks to the authors of these projects for the inspiration and the code. \ No newline at end of file diff --git a/applications/Games/air_labyrinth/manifest.yml b/applications/Games/air_labyrinth/manifest.yml deleted file mode 100644 index 95466d60..00000000 --- a/applications/Games/air_labyrinth/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jamisonderek/flipper-zero-tutorials.git - commit_sha: a54146a4af2a24869bc8950ad0941ccde103a275 - subdir: vgm/apps/air_labyrinth -description: "@.catalog/README.md" -changelog: "@.catalog/CHANGELOG.md" -author: "@CodeAllNight (MrDerekJamison)" -screenshots: - - ".catalog/screenshots/1.png" - diff --git a/applications/Games/apple_grabber/README.md b/applications/Games/apple_grabber/README.md deleted file mode 100644 index 7edab446..00000000 --- a/applications/Games/apple_grabber/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![apple_grabber](https://catalog.flipperzero.one/application/apple_grabber/widget)](https://catalog.flipperzero.one/application/apple_grabber/page) \ No newline at end of file diff --git a/applications/Games/apple_grabber/manifest.yml b/applications/Games/apple_grabber/manifest.yml deleted file mode 100644 index 3c79cfdf..00000000 --- a/applications/Games/apple_grabber/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/d7d8/apple-grabber.git - commit_sha: c662ff193ac361ed602670b688f33fa622e9e71a -short_description: Apple grabber game, default mode is vertical -description: "@README.md" -changelog: "@changelog.md" -screenshots: - - screenshots/Game.png - - screenshots/Menu.png \ No newline at end of file diff --git a/applications/Games/arddrivin/manifest.yml b/applications/Games/arddrivin/manifest.yml deleted file mode 100644 index 6db583ad..00000000 --- a/applications/Games/arddrivin/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/apfxtech/FlipperDrivin.git - commit_sha: 0baada353f4d6b8bcc181a493d8cb52412b6a472 - -short_description: Race game ported to Flipper Zero. -description: "@APPSTORE.md" -changelog: "@CHANGELOG.md" -screenshots: - - "package/screenshots/1.png" - - "package/screenshots/2.png" - - "package/screenshots/3.png" - - "package/screenshots/4.png" \ No newline at end of file diff --git a/applications/Games/ardugolf/manifest.yml b/applications/Games/ardugolf/manifest.yml deleted file mode 100644 index d888f830..00000000 --- a/applications/Games/ardugolf/manifest.yml +++ /dev/null @@ -1,17 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/apfxtech/FlipperGolf.git - commit_sha: a378ab82cf0b2633353190fadb5c901b29583f9c - -short_description: 3D mini-golf game ported to Flipper Zero. -description: "@APPSTORE.md" -changelog: "@CHANGELOG.md" -screenshots: - - "package/screenshots/screen1.png" - - "package/screenshots/screen2.png" - - "package/screenshots/screen3.png" - - "package/screenshots/screen4.png" - - "package/screenshots/screen5.png" - - "package/screenshots/screen6.png" - - "package/screenshots/screen7.png" \ No newline at end of file diff --git a/applications/Games/arduventure/manifest.yml b/applications/Games/arduventure/manifest.yml deleted file mode 100644 index 7bab4821..00000000 --- a/applications/Games/arduventure/manifest.yml +++ /dev/null @@ -1,18 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/apfxtech/FlipperArduventure.git - commit_sha: d58f3e85f9894be43cbab24aa97bcbe5f6a14f37 - -short_description: A top-down action adventure ported to Flipper Zero. -description: "@APPSTORE.md" -changelog: "@CHANGELOG.md" -screenshots: - - "package/screenshots/screen1.png" - - "package/screenshots/screen2.png" - - "package/screenshots/screen3.png" - - "package/screenshots/screen4.png" - - "package/screenshots/screen5.png" - - "package/screenshots/screen6.png" - - "package/screenshots/screen7.png" - - "package/screenshots/screen8.png" \ No newline at end of file diff --git a/applications/Games/arkanoid/README.md b/applications/Games/arkanoid/README.md deleted file mode 100644 index a9f38de9..00000000 --- a/applications/Games/arkanoid/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![arkanoid](https://catalog.flipperzero.one/application/arkanoid/widget)](https://catalog.flipperzero.one/application/arkanoid/page) \ No newline at end of file diff --git a/applications/Games/arkanoid/manifest.yml b/applications/Games/arkanoid/manifest.yml deleted file mode 100644 index 0285fc11..00000000 --- a/applications/Games/arkanoid/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: base_pack/arkanoid -description: "Arkanoid Game" -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "@xMasterX & @gotnull" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/Games/asteroids/README.md b/applications/Games/asteroids/README.md deleted file mode 100644 index 7da55439..00000000 --- a/applications/Games/asteroids/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![asteroids](https://catalog.flipperzero.one/application/asteroids/widget)](https://catalog.flipperzero.one/application/asteroids/page) \ No newline at end of file diff --git a/applications/Games/asteroids/manifest.yml b/applications/Games/asteroids/manifest.yml deleted file mode 100644 index 351d952a..00000000 --- a/applications/Games/asteroids/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/SimplyMinimal/FlipperZero-Asteroids.git - commit_sha: c2eb6c8b14f65a97d6b8c09f623b5a122888db03 -description: "Classic Asteroids game with enhanced features including power-ups, high score system, auto-fire, haptic feedback, and LED effects" -changelog: "v3.4.0 - Enhanced version with auto rapid fire, power up system, high score system, haptic feedback, LED effects, pause functionality, and reverse thrusters" -author: "@SimplyMinimal" -screenshots: - - "./images/Asteroids-PowerUps.png" - - "./images/PauseScreen.png" - diff --git a/applications/Games/banana/README.md b/applications/Games/banana/README.md deleted file mode 100644 index f6f5668d..00000000 --- a/applications/Games/banana/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![banana](https://catalog.flipperzero.one/application/banana/widget)](https://catalog.flipperzero.one/application/banana/page) \ No newline at end of file diff --git a/applications/Games/banana/manifest.yml b/applications/Games/banana/manifest.yml deleted file mode 100644 index eba0a3b6..00000000 --- a/applications/Games/banana/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/DrEverr/FlipperApps.git - commit_sha: d8c17e5000a31c3088c6c0b85680f1748168d379 - subdir: banana -description: "README.md" -short_description: "Banana. Everyone loves banana." -changelog: "CHANGELOG.md" -author: "Marcin Sokołowski (@DrEverr)" -screenshots: - - "./screens/1.png" - - "./screens/2.png" \ No newline at end of file diff --git a/applications/Games/bomberduck/README.md b/applications/Games/bomberduck/README.md deleted file mode 100644 index 7d19f336..00000000 --- a/applications/Games/bomberduck/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![bomberduck](https://catalog.flipperzero.one/application/bomberduck/widget)](https://catalog.flipperzero.one/application/bomberduck/page) \ No newline at end of file diff --git a/applications/Games/bomberduck/manifest.yml b/applications/Games/bomberduck/manifest.yml deleted file mode 100644 index 0a988cbb..00000000 --- a/applications/Games/bomberduck/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: base_pack/bomberduck -description: "Bomberduck(Bomberman) Game" -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "@leo-need-more-coffee & @xMasterX" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/Games/bzzbzz/manifest.yml b/applications/Games/bzzbzz/manifest.yml deleted file mode 100644 index adf82e4b..00000000 --- a/applications/Games/bzzbzz/manifest.yml +++ /dev/null @@ -1,20 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/ikiruneo/bzzbzz - commit_sha: 1ecda09b52e6171710a262f67d69c50be8e7548f - -short_description: Haptic rhythm-matching game -description: | - Haptic rhythm-matching game focusing on tactile feedback rather than visual cues. - - - The app generates a 5-step vibration sequence. - - Gaps between vibrations are randomized between 200, 500, and 800ms. - - Users must replicate the timing using the OK button. - - Accuracy is calculated based on timing offsets; a >=50% threshold is required to progress. - -changelog: "@changelog.md" - -screenshots: - - screenshots/screenshot1.png - - screenshots/screenshot2.png diff --git a/applications/Games/catacombs/manifest.yml b/applications/Games/catacombs/manifest.yml deleted file mode 100644 index 7d1bc380..00000000 --- a/applications/Games/catacombs/manifest.yml +++ /dev/null @@ -1,16 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/apfxtech/FlipperCatacombs.git - commit_sha: b10be52c493d5d9eae26bf65bb59ec41813adea8 - -short_description: A first-person dungeon crawler ported to Flipper Zero. -description: "@APPSTORE.md" -changelog: "@CHANGELOG.md" -screenshots: - - "package/screenshots/screen1.png" - - "package/screenshots/screen2.png" - - "package/screenshots/screen3.png" - - "package/screenshots/screen4.png" - - "package/screenshots/screen5.png" - - "package/screenshots/screen6.png" \ No newline at end of file diff --git a/applications/Games/chess/README.md b/applications/Games/chess/README.md deleted file mode 100644 index af1b8d55..00000000 --- a/applications/Games/chess/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![chess](https://catalog.flipperzero.one/application/chess/widget)](https://catalog.flipperzero.one/application/chess/page) \ No newline at end of file diff --git a/applications/Games/chess/manifest.yml b/applications/Games/chess/manifest.yml deleted file mode 100644 index 6741e660..00000000 --- a/applications/Games/chess/manifest.yml +++ /dev/null @@ -1,16 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xtruan/flipper-chess.git - commit_sha: f850ffbc6d8ca9c9e12c3a2bab16d5cbb009365e -description: "How about a nice game of chess?" -changelog: "v1.12 - Update to fix illegal move bug" -author: "@xtruan" -screenshots: - - "./catalog/startscreen.png" - - "./catalog/menu.png" - - "./catalog/game2.png" - - "./catalog/game3.png" - - "./catalog/game4.png" - - "./catalog/game5.png" - - "./catalog/settings.png" diff --git a/applications/Games/citybloxx/README.md b/applications/Games/citybloxx/README.md deleted file mode 100644 index 9d40c819..00000000 --- a/applications/Games/citybloxx/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![citybloxx](https://catalog.flipperzero.one/application/citybloxx/widget)](https://catalog.flipperzero.one/application/citybloxx/page) \ No newline at end of file diff --git a/applications/Games/citybloxx/manifest.yml b/applications/Games/citybloxx/manifest.yml deleted file mode 100644 index 3f5e3967..00000000 --- a/applications/Games/citybloxx/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Milk-Cool/fz-citybloxx.git - commit_sha: 2efc2ed6a9b461fb94f94d43ebd1f37ff3c2aabd -short_description: "A game based on City Bloxx" -description: "@README.md" -changelog: "v1.0 - First version" -author: "milk_cool" -screenshots: - - "./screenshots/1.png" diff --git a/applications/Games/color_guess/README.md b/applications/Games/color_guess/README.md deleted file mode 100644 index 8b886be7..00000000 --- a/applications/Games/color_guess/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![color_guess](https://catalog.flipperzero.one/application/color_guess/widget)](https://catalog.flipperzero.one/application/color_guess/page) \ No newline at end of file diff --git a/applications/Games/color_guess/manifest.yml b/applications/Games/color_guess/manifest.yml deleted file mode 100644 index 684b3d7c..00000000 --- a/applications/Games/color_guess/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/leedave/flipper-zero-color-guess - commit_sha: 448aac8416686eb43a4e54e9ee784243c32a0615 -description: "@./docs/README.md" -changelog: "@./docs/changelog.md" -author: "Leedave" -screenshots: - - "./screenshots/color_guess_1.png" - - "./screenshots/color_guess_2.png" - - "./screenshots/color_guess_3.png" diff --git a/applications/Games/countdown/README.md b/applications/Games/countdown/README.md deleted file mode 100644 index c5df7d3f..00000000 --- a/applications/Games/countdown/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![countdown](https://catalog.flipperzero.one/application/countdown/widget)](https://catalog.flipperzero.one/application/countdown/page) \ No newline at end of file diff --git a/applications/Games/countdown/manifest.yml b/applications/Games/countdown/manifest.yml deleted file mode 100644 index c55bc36b..00000000 --- a/applications/Games/countdown/manifest.yml +++ /dev/null @@ -1,18 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/sistemasorp/flipper-countdown.git - commit_sha: 4f60ab4c9b973dcdd2adc5dc496fcc7f13ec1371 - -id: countdown -name: "CountDown" -category: "Games" -author: "Oscar Rodriguez" -description: "@README.md" -short_description: "Solve target number from 6 numbers like the CountDown TV Show" -changelog: "@./docs/changelog.md" - - -screenshots: - - "screenshots/screenshot1.png" - - "screenshots/screenshot2.png" diff --git a/applications/Games/deadzone/README.md b/applications/Games/deadzone/README.md deleted file mode 100644 index 36c91dee..00000000 --- a/applications/Games/deadzone/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![deadzone](https://catalog.flipperzero.one/application/deadzone/widget)](https://catalog.flipperzero.one/application/deadzone/page) \ No newline at end of file diff --git a/applications/Games/deadzone/manifest.yml b/applications/Games/deadzone/manifest.yml deleted file mode 100644 index 65ed48dd..00000000 --- a/applications/Games/deadzone/manifest.yml +++ /dev/null @@ -1,15 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/retrooper/deadzone.git - commit_sha: 0b01b365e2d160ff951d8830b1c18fa26fc81837 -short_description: Fight through tough challenges, dodge enemy fire, and avoid the falling obstacles to survive! -description: "@README.md" -changelog: "v0.1 - Initial release, v0.2 Minor patches" -version: 0.2 -author: "@retrooper" -screenshots: - - "screenshots/flipper_screenshot_1.png" - - "screenshots/flipper_screenshot_2.png" - - "screenshots/flipper_screenshot_3.png" - diff --git a/applications/Games/dice_app/README.md b/applications/Games/dice_app/README.md deleted file mode 100644 index 53c3f8a1..00000000 --- a/applications/Games/dice_app/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![dice_app](https://catalog.flipperzero.one/application/dice_app/widget)](https://catalog.flipperzero.one/application/dice_app/page) \ No newline at end of file diff --git a/applications/Games/dice_app/manifest.yml b/applications/Games/dice_app/manifest.yml deleted file mode 100644 index 7a46ae7c..00000000 --- a/applications/Games/dice_app/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Ka3u6y6a/flipper-zero-dice.git - commit_sha: 7411293b775a1643291491bbfd67602f9cfa715d -description: "Dice rolling, types: Coin, d4, d6, d8, d10, d12, d20, d100" -changelog: "@CHANGELOG.md" -author: "@Ka3u6y6a" -screenshots: - - "./.flipcorg/gallery/1-main-screen.png" - - "./.flipcorg/gallery/2-roll-screen.png" - - "./.flipcorg/gallery/3-history-screen.png" \ No newline at end of file diff --git a/applications/Games/digital_kaleidoscope/README.md b/applications/Games/digital_kaleidoscope/README.md deleted file mode 100644 index 4fb9c169..00000000 --- a/applications/Games/digital_kaleidoscope/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# Digital Kaleidoscope - -Digital Kaleidoscope is a simple, animated visualizer for Flipper Zero. It displays four different patterns that shift and change, turning your Flipper into a miniature kaleidoscope. - ---- - -## Features - -- **Four Animated Styles** - 1. **Rotating Star** – A starburst that rotates around the center. - 2. **Concentric Arcs** – Semi-circles expand and contract around the middle. - 3. **Gradient Noise** – Random noise brighter at the center, fading toward the edges. - 4. **Mirrored Dots** – A random dot pattern mirrored left and right (regenerates on button press). - -- **Adjustable Density (0–100%)** - Use Up/Down to increase or decrease how “busy” each pattern appears. - -- **Simple Controls** - - **Left/Right**: Switch between the four styles. - - **Up/Down**: Adjust density level. - - **Back**: Exit the app and return to the main menu. diff --git a/applications/Games/digital_kaleidoscope/manifest.yml b/applications/Games/digital_kaleidoscope/manifest.yml deleted file mode 100644 index b3ba6d4f..00000000 --- a/applications/Games/digital_kaleidoscope/manifest.yml +++ /dev/null @@ -1,21 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/JamesR555/digital_kaleidoscope - commit_sha: 9e8a18e1f44855fe56674463fb22380024dc97be -short_description: Digital Kaleidoscope turns your Flipper Zero into a pocket-sized animated visualizer. Choose from four distinct kaleidoscope styles and adjust the pattern density on the fly. -description: | - Digital Kaleidoscope is a lightweight app for Flipper Zero that transforms the device’s screen into a dynamic, ever-changing kaleidoscope. You get four unique visual styles, each with its own characteristics: - - - **Rotating Star**: A radiating starburst spins slowly around the center of the display, giving the impression of a celestial dance. - - **Concentric Arcs**: Pixelated semi-circles expand and contract in rings from the middle of the screen, creating a fluid, ripple-like effect. - - **Gradient Noise**: Random noise pixels appear brightest at the center and fade toward the edges. The pattern shifts subtly over time, producing a mesmerizing “shifting haze.” - - **Mirrored Dots**: A static cloud of random dots is mirrored left-to-right. Unlike the other styles, this one does not animate automatically—you press an arrow key to regenerate the dot pattern whenever you like. - - You can fine-tune how “busy” each style looks by adjusting the density (0–100%) with the Up/Down buttons. The Left/Right arrows switch between the four visualizers, and pressing Back returns to the main menu. -changelog: "changelog.md" -screenshots: - - images/Screenshot-1.png - - images/Screenshot-2.png - - images/Screenshot-3.png - - images/Screenshot-4.png diff --git a/applications/Games/doom/README.md b/applications/Games/doom/README.md deleted file mode 100644 index 721bd52a..00000000 --- a/applications/Games/doom/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![doom](https://catalog.flipperzero.one/application/doom/widget)](https://catalog.flipperzero.one/application/doom/page) \ No newline at end of file diff --git a/applications/Games/doom/manifest.yml b/applications/Games/doom/manifest.yml deleted file mode 100644 index 41ef3a41..00000000 --- a/applications/Games/doom/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: base_pack/doom -description: "@README.md" -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Fixes for latest API, v1.3 - Fixes for latest API, v1.4 - Sync updates and latest API support, v1.5 - Sync with latest version" -author: "@xMasterX & @Svarich & @hedger (original code by @p4nic4ttack)" -screenshots: - - "./img/1.png" - - "./img/2.png" - - "./img/3.png" diff --git a/applications/Games/drifter/README.md b/applications/Games/drifter/README.md deleted file mode 100644 index 2905ed07..00000000 --- a/applications/Games/drifter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![drifter](https://catalog.flipperzero.one/application/drifter/widget)](https://catalog.flipperzero.one/application/drifter/page) \ No newline at end of file diff --git a/applications/Games/drifter/manifest.yml b/applications/Games/drifter/manifest.yml deleted file mode 100644 index bf7883dc..00000000 --- a/applications/Games/drifter/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jean-edouard/flipperzero-drifter.git - commit_sha: 95e395c4eaa8b3284ca132c4ebf67b1d3c8639b1 -changelog: "@./CHANGELOG.md" -description: "@./README.md" -author: "Jed Lejosne" -screenshots: - - "./screenshots/1.png" - - "./screenshots/2.png" - - "./screenshots/3.png" - - "./screenshots/4.png" diff --git a/applications/Games/eightball/README.md b/applications/Games/eightball/README.md deleted file mode 100644 index 0fa4ca22..00000000 --- a/applications/Games/eightball/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Magic 8 Ball - -This is a simple implementation of the classic Magic 8-ball game for the flipper zero. - -## How to play - -1. Ask your Flipper a yes or no question. -2. Press the center button to get an answer. - -## Version history - -- 0.1 - Initial release - -## Credits - -This game was created after following the tutorials from the [Flipper Game Enging Example](https://github.com/flipperdevices/flipperzero-game-engine-example) and [Building an app for Flipper Zero](https://instantiator.dev/post/flipper-zero-app-tutorial-01/). Thank you to those authors for your work with the community! diff --git a/applications/Games/eightball/manifest.yml b/applications/Games/eightball/manifest.yml deleted file mode 100644 index fef22c88..00000000 --- a/applications/Games/eightball/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/stevenquinn/flipper-8-ball.git - commit_sha: 356af387c6889daf245856f314427102ecddb630 -description: "@.catalog/README.md" -changelog: "@.catalog/CHANGELOG.md" -author: "Steven Quinn" -screenshots: - - ".catalog/screenshots/1.png" - - ".catalog/screenshots/2.png" - - ".catalog/screenshots/3.png" diff --git a/applications/Games/fighterjet/README.md b/applications/Games/fighterjet/README.md deleted file mode 100644 index cebe1847..00000000 --- a/applications/Games/fighterjet/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![fighterjet](https://catalog.flipperzero.one/application/fighterjet/widget)](https://catalog.flipperzero.one/application/fighterjet/page) \ No newline at end of file diff --git a/applications/Games/fighterjet/manifest.yml b/applications/Games/fighterjet/manifest.yml deleted file mode 100644 index c5ba60cd..00000000 --- a/applications/Games/fighterjet/manifest.yml +++ /dev/null @@ -1,10 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Erbonator3000/flipper-fighter-jet - commit_sha: 50b8213eb48271ee5944db90a126aa818e3b3388 -short-description: "Fighter Jet game." -description: "Game about flying a fighter jet anf hunting down enemies." -changelog: "@changelog.md" -screenshots: - - screenshots/gameplay.png diff --git a/applications/Games/flappy_bird/README.md b/applications/Games/flappy_bird/README.md deleted file mode 100644 index 08dc1539..00000000 --- a/applications/Games/flappy_bird/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flappy_bird](https://catalog.flipperzero.one/application/flappy_bird/widget)](https://catalog.flipperzero.one/application/flappy_bird/page) \ No newline at end of file diff --git a/applications/Games/flappy_bird/manifest.yml b/applications/Games/flappy_bird/manifest.yml deleted file mode 100644 index be579c0f..00000000 --- a/applications/Games/flappy_bird/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: base_pack/flappy_bird -description: "Flappy Bird Game" -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "@DroomOne & @xMasterX" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/Games/flight_assault/README.md b/applications/Games/flight_assault/README.md deleted file mode 100644 index ac2b5aef..00000000 --- a/applications/Games/flight_assault/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flight_assault](https://catalog.flipperzero.one/application/flight_assault/widget)](https://catalog.flipperzero.one/application/flight_assault/page) \ No newline at end of file diff --git a/applications/Games/flight_assault/manifest.yml b/applications/Games/flight_assault/manifest.yml deleted file mode 100644 index 0bf59f6d..00000000 --- a/applications/Games/flight_assault/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/evillero/flight_assault - commit_sha: fa2c6d4bcfb056cfe76daa3d4e4486ee2211dca9 -description: "@.catalog/README.md" -changelog: "@.catalog/CHANGELOG.md" -author: "@evillero" -screenshots: - - ".catalog/screenshots/0.png" - - ".catalog/screenshots/1.png" - - ".catalog/screenshots/2.png" diff --git a/applications/Games/flipper_hero/README.md b/applications/Games/flipper_hero/README.md deleted file mode 100644 index 99598337..00000000 --- a/applications/Games/flipper_hero/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flipper_hero](https://catalog.flipperzero.one/application/flipper_hero/widget)](https://catalog.flipperzero.one/application/flipper_hero/page) \ No newline at end of file diff --git a/applications/Games/flipper_hero/manifest.yml b/applications/Games/flipper_hero/manifest.yml deleted file mode 100644 index 2044ea84..00000000 --- a/applications/Games/flipper_hero/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/mentoster/flipper-hero - commit_sha: 397580153d091cade8cc82c0c587d71400c2c3e9 -description: "@./docs/README.md" -changelog: "@./docs/changelog.md" -author: "Mentoster" -screenshots: - - "./screenshots/Screenshot-1.png" - - "./screenshots/Screenshot-2.png" - - "./screenshots/Screenshot-3.png" - - "./screenshots/Screenshot-4.png" diff --git a/applications/Games/flipper_pong/README.md b/applications/Games/flipper_pong/README.md deleted file mode 100644 index a37629a6..00000000 --- a/applications/Games/flipper_pong/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flipper_pong](https://catalog.flipperzero.one/application/flipper_pong/widget)](https://catalog.flipperzero.one/application/flipper_pong/page) \ No newline at end of file diff --git a/applications/Games/flipper_pong/manifest.yml b/applications/Games/flipper_pong/manifest.yml deleted file mode 100644 index a02a97d6..00000000 --- a/applications/Games/flipper_pong/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/flipper_pong -description: "Simple pong game" -changelog: "v1.0 - Initial release, v1.1 - Icon fixes, v1.2 - Sync Updates, v1.3 - Sync updates and latest API support, v1.4 - Sync with latest version" -author: "@nmrr & @SimplyMinimal" -screenshots: - - "./img/1.png" diff --git a/applications/Games/flipperpose/README.md b/applications/Games/flipperpose/README.md deleted file mode 100644 index 3b8b97d9..00000000 --- a/applications/Games/flipperpose/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flipperpose](https://catalog.flipperzero.one/application/flipperpose/widget)](https://catalog.flipperzero.one/application/flipperpose/page) \ No newline at end of file diff --git a/applications/Games/flipperpose/manifest.yml b/applications/Games/flipperpose/manifest.yml deleted file mode 100644 index 847d14be..00000000 --- a/applications/Games/flipperpose/manifest.yml +++ /dev/null @@ -1,15 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/MrNull1/flipperpose.git - commit_sha: 282bf9247d0b7bbf76d829b846b071e7065892fd -short_description: A simple app to pose your flipper buddy for photos! -description: "@README.md" -changelog: "@changelog.md" -version: 1.0 -author: "mrnullone" -screenshots: - - "screenshots/sc1.png" - - "screenshots/sc2.png" - - "screenshots/sc3.png" - - "screenshots/sc4.png" diff --git a/applications/Games/flipperzero_fnaf/README.md b/applications/Games/flipperzero_fnaf/README.md deleted file mode 100644 index f2a244e3..00000000 --- a/applications/Games/flipperzero_fnaf/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flipperzero_fnaf](https://catalog.flipperzero.one/application/flipperzero_fnaf/widget)](https://catalog.flipperzero.one/application/flipperzero_fnaf/page) \ No newline at end of file diff --git a/applications/Games/flipperzero_fnaf/manifest.yml b/applications/Games/flipperzero_fnaf/manifest.yml deleted file mode 100644 index 1b3e5e1d..00000000 --- a/applications/Games/flipperzero_fnaf/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/sillygir1/flipperzero-fnaf.git - commit_sha: bdedd7cb64a283db042234f76cb5d8331b17729d -short_description: Five Nights at Flipper's -description: "@./catalog/description.md" -changelog: "@./catalog/changelog.md" -screenshots: - - catalog/1.png - - catalog/2.png - - catalog/3.png - - catalog/4.png diff --git a/applications/Games/flippy_road/README.md b/applications/Games/flippy_road/README.md deleted file mode 100644 index cf510c4e..00000000 --- a/applications/Games/flippy_road/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flippy_road](https://catalog.flipperzero.one/application/flippy_road/widget)](https://catalog.flipperzero.one/application/flippy_road/page) \ No newline at end of file diff --git a/applications/Games/flippy_road/manifest.yml b/applications/Games/flippy_road/manifest.yml deleted file mode 100644 index f7105ea5..00000000 --- a/applications/Games/flippy_road/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/rkilpadi/flippy-road.git - commit_sha: 21a5b41b0a26a8d3dffa16ab74eb5dfda0e28a06 -description: "Cross roads and rivers in a Frogger-inspired platformer" -changelog: "@changelog.md" -author: "@rkilpadi" -screenshots: - - "./screenshots/screenshot1.png" - - "./screenshots/screenshot2.png" diff --git a/applications/Games/fortune_cookie/README.md b/applications/Games/fortune_cookie/README.md deleted file mode 100644 index 5b1c7cd4..00000000 --- a/applications/Games/fortune_cookie/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![fortune_cookie](https://catalog.flipperzero.one/application/fortune_cookie/widget)](https://catalog.flipperzero.one/application/fortune_cookie/page) \ No newline at end of file diff --git a/applications/Games/fortune_cookie/manifest.yml b/applications/Games/fortune_cookie/manifest.yml deleted file mode 100644 index a78ecbbe..00000000 --- a/applications/Games/fortune_cookie/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/evillero/fortune_cookie - commit_sha: 2dd905b19ebebdf793f2d75f164c891927ae1af6 -description: "@.catalog/README.md" -changelog: "@.catalog/CHANGELOG.md" -author: "@evillero" -screenshots: - - ".catalog/screenshots/screenshot1.png" - - ".catalog/screenshots/screenshot2.png" - diff --git a/applications/Games/furious_birds/README.md b/applications/Games/furious_birds/README.md deleted file mode 100644 index 0bb519ef..00000000 --- a/applications/Games/furious_birds/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![furious_birds](https://catalog.flipperzero.one/application/furious_birds/widget)](https://catalog.flipperzero.one/application/furious_birds/page) \ No newline at end of file diff --git a/applications/Games/furious_birds/manifest.yml b/applications/Games/furious_birds/manifest.yml deleted file mode 100644 index e23a636c..00000000 --- a/applications/Games/furious_birds/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/bmstr-ru/furious-birds.git - commit_sha: 79a8506a7b42c0ad96833b82bf65f44b0005b9b4 -short_description: Furious Birds game -description: "@README-manifest.md" -changelog: "@changelog.md" -screenshots: - - screenshots/game.png - - screenshots/game_over.png - - screenshots/logo.png \ No newline at end of file diff --git a/applications/Games/game15/README.md b/applications/Games/game15/README.md deleted file mode 100644 index ca418be3..00000000 --- a/applications/Games/game15/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![game15](https://catalog.flipperzero.one/application/game15/widget)](https://catalog.flipperzero.one/application/game15/page) \ No newline at end of file diff --git a/applications/Games/game15/manifest.yml b/applications/Games/game15/manifest.yml deleted file mode 100644 index a5644126..00000000 --- a/applications/Games/game15/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: base_pack/game15 -description: "Logic Game" -changelog: "v1.0 - Initial release, v1.1 - Various important fixe, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "@x27" -screenshots: - - "./img/1.png" diff --git a/applications/Games/game_2048/README.md b/applications/Games/game_2048/README.md deleted file mode 100644 index a6a457fa..00000000 --- a/applications/Games/game_2048/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![game_2048](https://catalog.flipperzero.one/application/game_2048/widget)](https://catalog.flipperzero.one/application/game_2048/page) \ No newline at end of file diff --git a/applications/Games/game_2048/manifest.yml b/applications/Games/game_2048/manifest.yml deleted file mode 100644 index 54e5e22d..00000000 --- a/applications/Games/game_2048/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: base_pack/game_2048 -description: "@README-catalog.md" -changelog: "v1.0 - Initial release, v1.1 - Description update, v1.2 - Various important fixes, v1.3 - Fixes for latest API, v1.4 - Fixes for latest API, v1.5 - Sync updates and latest API support, v1.6 - Sync with latest version" -author: "@eugene-kirzhanov" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/Games/game_connect_wires/README.md b/applications/Games/game_connect_wires/README.md deleted file mode 100644 index 4f731477..00000000 --- a/applications/Games/game_connect_wires/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![game_connect_wires](https://catalog.flipperzero.one/application/game_connect_wires/widget)](https://catalog.flipperzero.one/application/game_connect_wires/page) \ No newline at end of file diff --git a/applications/Games/game_connect_wires/manifest.yml b/applications/Games/game_connect_wires/manifest.yml deleted file mode 100644 index 1ab9f7c8..00000000 --- a/applications/Games/game_connect_wires/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/AlexTaran/flipperzero.git - commit_sha: 02b332d686e0a9c3cfebe941a7b2a34afc27235b - subdir: games/connect_wires -description: "@README-catalog.md" -short_description: "A famous puzzle game" -changelog: "v1.0 - Initial release, v1.1 - Bug fixes, v1.2 - Memory leak fix" -author: "@AlexTaran" -screenshots: - - "./screenshots/1.png" - - "./screenshots/2.png" - - "./screenshots/3.png" diff --git a/applications/Games/game_hanoi_towers/README.md b/applications/Games/game_hanoi_towers/README.md deleted file mode 100644 index 561dc4cf..00000000 --- a/applications/Games/game_hanoi_towers/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![game_hanoi_towers](https://catalog.flipperzero.one/application/game_hanoi_towers/widget)](https://catalog.flipperzero.one/application/game_hanoi_towers/page) \ No newline at end of file diff --git a/applications/Games/game_hanoi_towers/manifest.yml b/applications/Games/game_hanoi_towers/manifest.yml deleted file mode 100644 index e8f44e39..00000000 --- a/applications/Games/game_hanoi_towers/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/AlexTaran/flipperzero.git - commit_sha: 016307aaea59ac6776b6dbc3f5557d9b06ef0042 - subdir: games/hanoi_towers -description: "@README-catalog.md" -short_description: "A puzzle game about moving tower of disks to another stick" -changelog: "v1.0 - Initial release" -author: "@AlexTaran" -screenshots: - - "./screenshots/1.png" - - "./screenshots/2.png" - - "./screenshots/3.png" diff --git a/applications/Games/game_vexed/README.md b/applications/Games/game_vexed/README.md deleted file mode 100644 index a18cf97c..00000000 --- a/applications/Games/game_vexed/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![game_vexed](https://catalog.flipperzero.one/application/game_vexed/widget)](https://catalog.flipperzero.one/application/game_vexed/page) \ No newline at end of file diff --git a/applications/Games/game_vexed/manifest.yml b/applications/Games/game_vexed/manifest.yml deleted file mode 100644 index 7202b190..00000000 --- a/applications/Games/game_vexed/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/dlvoy/flipper-zero-vexed.git - commit_sha: ce0280ea19306541425bdc488b263e0e821dffc5 -description: "@SHORTDESC.md" -changelog: "@CHANGELOG.md" -author: "Dominik Dzienia" -screenshots: - - "./img/1.png" - - "./img/2.png" - - "./img/3.png" - - "./img/4.png" diff --git a/applications/Games/gameoflife/README.md b/applications/Games/gameoflife/README.md deleted file mode 100644 index 6837c39d..00000000 --- a/applications/Games/gameoflife/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![gameoflife](https://catalog.flipperzero.one/application/gameoflife/widget)](https://catalog.flipperzero.one/application/gameoflife/page) \ No newline at end of file diff --git a/applications/Games/gameoflife/manifest.yml b/applications/Games/gameoflife/manifest.yml deleted file mode 100644 index bc9600c8..00000000 --- a/applications/Games/gameoflife/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/game_of_life -description: "Life, is a cellular automaton devised by the British mathematician John Horton Conway in 1970." -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "@tgxn (original by @itsyourbedtime)" -screenshots: - - "./img/1.png" diff --git a/applications/Games/hangman/README.md b/applications/Games/hangman/README.md deleted file mode 100644 index 1e93f27f..00000000 --- a/applications/Games/hangman/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![hangman](https://catalog.flipperzero.one/application/hangman/widget)](https://catalog.flipperzero.one/application/hangman/page) \ No newline at end of file diff --git a/applications/Games/hangman/manifest.yml b/applications/Games/hangman/manifest.yml deleted file mode 100644 index c0326e91..00000000 --- a/applications/Games/hangman/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/bolknote/Flipper-Zero-Hangman-Game - commit_sha: 8ce923b47e41dfca2634a3fc607e40fceead1995 -description: "Hangman is a guessing game. Flipper thinks of a word and the gamer tries to guess it by suggesting letters within a certain number of guesses." -changelog: "v1.4 - Spanish and Tatar languages were added, fixed several bugs" -author: "@bolknote" -screenshots: - - "./catalog/0.png" - - "./catalog/1.png" - - "./catalog/2.png" - - "./catalog/3.png" diff --git a/applications/Games/heap_defence/README.md b/applications/Games/heap_defence/README.md deleted file mode 100644 index 31bb0f00..00000000 --- a/applications/Games/heap_defence/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![heap_defence](https://catalog.flipperzero.one/application/heap_defence/widget)](https://catalog.flipperzero.one/application/heap_defence/page) \ No newline at end of file diff --git a/applications/Games/heap_defence/manifest.yml b/applications/Games/heap_defence/manifest.yml deleted file mode 100644 index b7bb6cbd..00000000 --- a/applications/Games/heap_defence/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: base_pack/heap_defence_game -description: "Heap Defence game from hackathon (aka Stack Attack)" -changelog: "v1.0 - Initial release, v1.1 - Sync Updates, v1.2 - Fixes for latest API, v1.3 - Sync updates and latest API suppor, v1.4 - Sync with latest version" -author: "@xMasterX (original implementation by @wquinoa & @Vedmein)" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/Games/jetpack_game/README.md b/applications/Games/jetpack_game/README.md deleted file mode 100644 index 8264abc9..00000000 --- a/applications/Games/jetpack_game/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![jetpack_game](https://catalog.flipperzero.one/application/jetpack_game/widget)](https://catalog.flipperzero.one/application/jetpack_game/page) diff --git a/applications/Games/jetpack_game/manifest.yml b/applications/Games/jetpack_game/manifest.yml deleted file mode 100644 index 16eada0f..00000000 --- a/applications/Games/jetpack_game/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/timstrasser/flipper-jetpack-game.git - commit_sha: 847f0f0b39df05df5f85836d0ee4d62d1ce3f330 -short_description: Jetpack Game -description: 'Dive into the adventurous world of Jetpack Joyride on Flipper Zero! Navigate Barry through a high-tech lab filled with obstacles, collect coins, and fly in this thrilling remake of the classic game.' -changelog: 'Initial release' -author: '@timstrasser' -screenshots: - - './docs/screenshots/gameplay.png' diff --git a/applications/Games/kcline/README.md b/applications/Games/kcline/README.md deleted file mode 100644 index 496c8697..00000000 --- a/applications/Games/kcline/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![kcline](https://catalog.flipperzero.one/application/kcline/widget)](https://catalog.flipperzero.one/application/kcline/page) \ No newline at end of file diff --git a/applications/Games/kcline/manifest.yml b/applications/Games/kcline/manifest.yml deleted file mode 100644 index d9ae0df7..00000000 --- a/applications/Games/kcline/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/HappyAmos/Flipper_FAPS.git - commit_sha: 135be9893fa4e606d8bfb2a703dab19242941794 - subdir: kcline -description: "@README-catalog.md" -short_description: "A simple one line bit munching game." -changelog: "@changelog.md" -author: "@HappyAmos" -screenshots: - - "./screenshots/screenshot_1.png" - - "./screenshots/screenshot_2.png" - - "./screenshots/screenshot_3.png" diff --git a/applications/Games/laser_tag/README.md b/applications/Games/laser_tag/README.md deleted file mode 100644 index 1a53a7ab..00000000 --- a/applications/Games/laser_tag/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![laser_tag](https://catalog.flipperzero.one/application/laser_tag/widget)](https://catalog.flipperzero.one/application/laser_tag/page) \ No newline at end of file diff --git a/applications/Games/laser_tag/manifest.yml b/applications/Games/laser_tag/manifest.yml deleted file mode 100644 index 7cb803e2..00000000 --- a/applications/Games/laser_tag/manifest.yml +++ /dev/null @@ -1,20 +0,0 @@ -author: '@RocketGod-git & @jamisonderek' -category: 'Games' -changelog: '@./docs/CHANGELOG.md' -description: '@./docs/README.md' -icon: 'icons/laser_tag_10px.png' -id: 'laser_tag' -name: 'Laser Tag' -screenshots: - - 'screenshots/Screenshot1.png' - - 'screenshots/Screenshot2.png' - - 'screenshots/Screenshot3.png' - - 'screenshots/Screenshot4.png' -short_description: 'Laser Tag game for Flipper Zero' -sourcecode: - location: - commit_sha: 5276029b510ef3a7d94a73aa7aa6c7c5c0657cba - origin: https://github.com/RocketGod-git/Flipper-Zero-Laser-Tag.git - subdir: - type: git -version: 2.3 diff --git a/applications/Games/lifecounter/README.md b/applications/Games/lifecounter/README.md deleted file mode 100644 index 87ada919..00000000 --- a/applications/Games/lifecounter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![lifecounter](https://catalog.flipperzero.one/application/lifecounter/widget)](https://catalog.flipperzero.one/application/lifecounter/page) \ No newline at end of file diff --git a/applications/Games/lifecounter/manifest.yml b/applications/Games/lifecounter/manifest.yml deleted file mode 100644 index 0891fec8..00000000 --- a/applications/Games/lifecounter/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/antsy/Lifecounter.git - commit_sha: a65f9dbc0bff89085d1c9054465ddcaebf836b48 -category: 'Games' -author: '@antsy' -short_description: Life tracker for collectible card games such as Flesh and Blood, Magic the Gathering, Sorcery, Lorcana etc. -description: '@./README2.md' -changelog: '@./CHANGELOG.md' -screenshots: - - screenshot.png diff --git a/applications/Games/mandelbrotset/README.md b/applications/Games/mandelbrotset/README.md deleted file mode 100644 index 0f04bc0a..00000000 --- a/applications/Games/mandelbrotset/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![mandelbrotset](https://catalog.flipperzero.one/application/mandelbrotset/widget)](https://catalog.flipperzero.one/application/mandelbrotset/page) \ No newline at end of file diff --git a/applications/Games/mandelbrotset/manifest.yml b/applications/Games/mandelbrotset/manifest.yml deleted file mode 100644 index c1f154fd..00000000 --- a/applications/Games/mandelbrotset/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/mandelbrot -description: "The Mandelbrot set is the set of all so-called (complex) numbers that meet Mandelbrots simple arithmetic criterion." -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "@Possibly-Matt" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/Games/matagotchi/README.md b/applications/Games/matagotchi/README.md deleted file mode 100644 index 4e0d81e2..00000000 --- a/applications/Games/matagotchi/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![matagotchi](https://catalog.flipperzero.one/application/matagotchi/widget)](https://catalog.flipperzero.one/application/matagotchi/page) diff --git a/applications/Games/matagotchi/manifest.yml b/applications/Games/matagotchi/manifest.yml deleted file mode 100644 index 9516710a..00000000 --- a/applications/Games/matagotchi/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/MrModd/Matagotchi.git - commit_sha: 7b5d3d0545cbb90d9b8215b7104b1b94a3854bef -description: "Matagotchi: a Tamagotchi(R) like game for Flipper Zero" -changelog: "@CHANGELOG.md" -screenshots: - - images/home_screen.png - - images/stats_screen.png - - images/about_screen.png diff --git a/applications/Games/minesweeper_redux/README.md b/applications/Games/minesweeper_redux/README.md deleted file mode 100644 index ae9eb896..00000000 --- a/applications/Games/minesweeper_redux/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![minesweeper_redux](https://catalog.flipperzero.one/application/minesweeper_redux/widget)](https://catalog.flipperzero.one/application/minesweeper_redux/page) \ No newline at end of file diff --git a/applications/Games/minesweeper_redux/manifest.yml b/applications/Games/minesweeper_redux/manifest.yml deleted file mode 100644 index b5865855..00000000 --- a/applications/Games/minesweeper_redux/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/squee72564/F0_Minesweeper_Fap - commit_sha: 3de0b724ab81ef5a215c051e93545ae1236f1b0b -description: "@./img/SIMPLEREADME.md" -changelog: "@./docs/changelog.md" -author: "Alexander Rodriguez" -screenshots: - - "./img/screenshot1.png" - - "./img/screenshot2.png" - - "./img/screenshot3.png" - - "./img/screenshot4.png" - - "./img/screenshot5.png" diff --git a/applications/Games/montyhall/README.md b/applications/Games/montyhall/README.md deleted file mode 100644 index 7e7de3bf..00000000 --- a/applications/Games/montyhall/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![montyhall](https://catalog.flipperzero.one/application/montyhall/widget)](https://catalog.flipperzero.one/application/montyhall/page) \ No newline at end of file diff --git a/applications/Games/montyhall/manifest.yml b/applications/Games/montyhall/manifest.yml deleted file mode 100644 index 5b9a92d2..00000000 --- a/applications/Games/montyhall/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/montyhall -description: "Monty Hall asks you to guess which closed door a prize is behind." -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "@DevMilanIan" -screenshots: - - "./img/2.png" - - "./img/3.png" - - "./img/1.png" diff --git a/applications/Games/myblab/manifest.yml b/applications/Games/myblab/manifest.yml deleted file mode 100644 index 4705033d..00000000 --- a/applications/Games/myblab/manifest.yml +++ /dev/null @@ -1,16 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/apfxtech/FlipperMysticBalloon.git - commit_sha: 7b327b972e31def076dabfb9b199dd5eecaa5f16 - -short_description: A simple fly-platformer where the character hovers through levels using balloons, ported to Flipper Zero. -description: "@APPSTORE.md" -changelog: "@CHANGELOG.md" -screenshots: - - "package/screenshots/screen1.png" - - "package/screenshots/screen2.png" - - "package/screenshots/screen3.png" - - "package/screenshots/screen4.png" - - "package/screenshots/screen5.png" - - "package/screenshots/screen6.png" \ No newline at end of file diff --git a/applications/Games/nupogodi/README.md b/applications/Games/nupogodi/README.md deleted file mode 100644 index 21f0a70a..00000000 --- a/applications/Games/nupogodi/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![nupogodi](https://catalog.flipperzero.one/application/nupogodi/widget)](https://catalog.flipperzero.one/application/nupogodi/page) \ No newline at end of file diff --git a/applications/Games/nupogodi/manifest.yml b/applications/Games/nupogodi/manifest.yml deleted file mode 100644 index 79737906..00000000 --- a/applications/Games/nupogodi/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/sionyx/flipper_nupogodi.git - commit_sha: afdae127be3498ea5104a13f157aac0512e80bf2 -description: "Elektronika IM-02 - Nu, Pogodi! / (Game & Watch - Egg) - Soviet retro game" -short_description: "Elektronika IM-02 - Nu, Pogodi!" -changelog: "v1.3: Async eggs; new Pause screen" -author: "@sionyx" -screenshots: - - "./screens/nupogodi1.png" - - "./screens/nupogodi2.png" - - "./screens/nupogodi3.png" \ No newline at end of file diff --git a/applications/Games/paint/README.md b/applications/Games/paint/README.md deleted file mode 100644 index 543c4e8c..00000000 --- a/applications/Games/paint/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![paint](https://catalog.flipperzero.one/application/paint/widget)](https://catalog.flipperzero.one/application/paint/page) \ No newline at end of file diff --git a/applications/Games/paint/manifest.yml b/applications/Games/paint/manifest.yml deleted file mode 100644 index 7d3f2b9f..00000000 --- a/applications/Games/paint/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/paint -description: "A basic Paint app, Click Ok to draw dot, hold Ok to enable drawing continuously, hold Back to clear the screen" -changelog: "v1.0 - Initial release, v1.1 - Sync Updates, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "@n-o-T-I-n-s-a-n-e" -screenshots: - - "./img/1.png" diff --git a/applications/Games/pinball0/README.md b/applications/Games/pinball0/README.md deleted file mode 100644 index c670ea72..00000000 --- a/applications/Games/pinball0/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![pinball0](https://catalog.flipperzero.one/application/pinball0/widget)](https://catalog.flipperzero.one/application/pinball0/page) \ No newline at end of file diff --git a/applications/Games/pinball0/manifest.yml b/applications/Games/pinball0/manifest.yml deleted file mode 100644 index 4fdea4c6..00000000 --- a/applications/Games/pinball0/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/rdefeo/pinball0.git - commit_sha: 26ed6d3b523428cc00df26fea5c1e9a5e14b85f3 -changelog: "@./CHANGELOG.md" -description: "@./README_flipperlab.md" -author: "Roberto De Feo" -screenshots: - - "./screenshots/lab_splash.png" - - "./screenshots/lab_menu.png" - - "./screenshots/lab_basic.png" - - "./screenshots/lab_el_ocho.png" - - "./screenshots/lab_classic.png" diff --git a/applications/Games/princeofarabia/manifest.yml b/applications/Games/princeofarabia/manifest.yml deleted file mode 100644 index 094617c9..00000000 --- a/applications/Games/princeofarabia/manifest.yml +++ /dev/null @@ -1,16 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/apfxtech/FlipperPrinceOfArabia.git - commit_sha: 88bcae7ce8537cd07a696bb80516d7ef7a66dfac - -short_description: Escape the dungeons and free the princess! -description: "@APPSTORE.md" -changelog: "@CHANGELOG.md" -screenshots: - - "package/screenshots/1.png" - - "package/screenshots/2.png" - - "package/screenshots/3.png" - - "package/screenshots/4.png" - - "package/screenshots/5.png" - - "package/screenshots/6.png" \ No newline at end of file diff --git a/applications/Games/quadrastic/README.md b/applications/Games/quadrastic/README.md deleted file mode 100644 index 40639c6e..00000000 --- a/applications/Games/quadrastic/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![quadrastic](https://catalog.flipperzero.one/application/quadrastic/widget)](https://catalog.flipperzero.one/application/quadrastic/page) \ No newline at end of file diff --git a/applications/Games/quadrastic/manifest.yml b/applications/Games/quadrastic/manifest.yml deleted file mode 100644 index a6044fdd..00000000 --- a/applications/Games/quadrastic/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/ivanbarsukov/flipperzero-quadrastic.git - commit_sha: 1837a9a203ffd2d137fb0b3c6321f97fcb173b4b -description: | - Quadrastic is a simple addicting game inspired by the Arduboy game of the same name. This, in turn, was based on a popular PSP homebrew game called Squarez. Squarez itself drew inspiration from Ball, a game created by Nicolay Edin and Axel Hammarback, which was originally inspired by Eskiv, a game developed by Jean-François Geyelin. -changelog: "@CHANGELOG.md" -screenshots: - - "screenshots/screenshot-1.png" - - "screenshots/screenshot-2.png" - - "screenshots/screenshot-3.png" - - "screenshots/screenshot-4.png" - - "screenshots/screenshot-5.png" \ No newline at end of file diff --git a/applications/Games/questions/README.md b/applications/Games/questions/README.md deleted file mode 100644 index 23c9d4af..00000000 --- a/applications/Games/questions/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![questions](https://catalog.flipperzero.one/application/questions/widget)](https://catalog.flipperzero.one/application/questions/page) \ No newline at end of file diff --git a/applications/Games/questions/manifest.yml b/applications/Games/questions/manifest.yml deleted file mode 100644 index e2a006d8..00000000 --- a/applications/Games/questions/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/nikilark/flipper_questions.git - commit_sha: b701d55fca4d5fee85b241ba992754ac7a3695aa -description: "Game contains questions to ask you friend, couple or someone new on party to get to know each other better." -changelog: "v1.0 - Initial release, v1.1 - Adjusted build for API 58.0" -screenshots: - - "assets/q_menu.png" - - "assets/q_ex1.png" - - "assets/q_ex2.png" diff --git a/applications/Games/race_game/manifest.yml b/applications/Games/race_game/manifest.yml deleted file mode 100644 index e87d67f8..00000000 --- a/applications/Games/race_game/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/mrc19056/flipper-race-game.git - commit_sha: 794197bedd786c35db1801895743f53dfb2c9a39 -short_description: 3-lane racing game with power-ups, combos, and night mode -description: "@README.md" -changelog: "@CHANGELOG.md" -screenshots: - - screenshots/menu.png - - screenshots/gameplay.png - - screenshots/gameover.png diff --git a/applications/Games/racegame/README.md b/applications/Games/racegame/README.md deleted file mode 100644 index 8edcd032..00000000 --- a/applications/Games/racegame/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![racegame](https://catalog.flipperzero.one/application/racegame/widget)](https://catalog.flipperzero.one/application/racegame/page) \ No newline at end of file diff --git a/applications/Games/racegame/manifest.yml b/applications/Games/racegame/manifest.yml deleted file mode 100644 index 5c7bc1c9..00000000 --- a/applications/Games/racegame/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/racegame -description: "Race game inspired by Race game in BrickGame 9999 in 1." -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "@zyuhel" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/Games/racso_sokoban/README.md b/applications/Games/racso_sokoban/README.md deleted file mode 100644 index 81481b04..00000000 --- a/applications/Games/racso_sokoban/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![racso_sokoban](https://catalog.flipperzero.one/application/racso_sokoban/widget)](https://catalog.flipperzero.one/application/racso_sokoban/page) \ No newline at end of file diff --git a/applications/Games/racso_sokoban/manifest.yml b/applications/Games/racso_sokoban/manifest.yml deleted file mode 100644 index f671ebb1..00000000 --- a/applications/Games/racso_sokoban/manifest.yml +++ /dev/null @@ -1,16 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Racso/fzero-apps.git - commit_sha: b4dc5c6dec170d32606999af4c38320a9f1fbffb - subdir: sokoban -description: "@README.md" -changelog: "@./release/changelog.md" -screenshots: - - release/1.png - - release/2.png - - release/3.png - - release/4.png - - release/5.png - - release/6.png - - release/7.png diff --git a/applications/Games/racso_ultimate_tic_tac_toe/README.md b/applications/Games/racso_ultimate_tic_tac_toe/README.md deleted file mode 100644 index f177390e..00000000 --- a/applications/Games/racso_ultimate_tic_tac_toe/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![racso_ultimate_tic_tac_toe](https://catalog.flipperzero.one/application/racso_ultimate_tic_tac_toe/widget)](https://catalog.flipperzero.one/application/racso_ultimate_tic_tac_toe/page) \ No newline at end of file diff --git a/applications/Games/racso_ultimate_tic_tac_toe/manifest.yml b/applications/Games/racso_ultimate_tic_tac_toe/manifest.yml deleted file mode 100644 index e16b9528..00000000 --- a/applications/Games/racso_ultimate_tic_tac_toe/manifest.yml +++ /dev/null @@ -1,15 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Racso/fzero-apps.git - commit_sha: 17559d0dfcdb9e260b7e6ccc10654cec0492d672 - subdir: ultimate_tic_tac_toe -description: "@README.md" -changelog: "@./release/changelog.md" -screenshots: - - release/1.png - - release/2.png - - release/3.png - - release/4.png - - release/5.png - - release/6.png diff --git a/applications/Games/racso_zero/README.md b/applications/Games/racso_zero/README.md deleted file mode 100644 index 275eb64c..00000000 --- a/applications/Games/racso_zero/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![racso_zero](https://catalog.flipperzero.one/application/racso_zero/widget)](https://catalog.flipperzero.one/application/racso_zero/page) \ No newline at end of file diff --git a/applications/Games/racso_zero/manifest.yml b/applications/Games/racso_zero/manifest.yml deleted file mode 100644 index fb2cd7b1..00000000 --- a/applications/Games/racso_zero/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Racso/fzero-apps.git - commit_sha: 17559d0dfcdb9e260b7e6ccc10654cec0492d672 - subdir: zero -description: "@README.md" -changelog: "@./release/changelog.md" -screenshots: - - release/1.png - - release/2.png - - release/3.png - - release/4.png \ No newline at end of file diff --git a/applications/Games/reaction/README.md b/applications/Games/reaction/README.md deleted file mode 100644 index adee399c..00000000 --- a/applications/Games/reaction/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![reaction](https://catalog.flipperzero.one/application/reaction/widget)](https://catalog.flipperzero.one/application/reaction/page) \ No newline at end of file diff --git a/applications/Games/reaction/manifest.yml b/applications/Games/reaction/manifest.yml deleted file mode 100644 index f3f4274e..00000000 --- a/applications/Games/reaction/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/fz-reaction-game -description: "A simple reaction test game" -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "@Milk-Cool" -screenshots: - - "./img/1.png" diff --git a/applications/Games/reversi/README.md b/applications/Games/reversi/README.md deleted file mode 100644 index 69a1fe11..00000000 --- a/applications/Games/reversi/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![reversi](https://catalog.flipperzero.one/application/reversi/widget)](https://catalog.flipperzero.one/application/reversi/page) \ No newline at end of file diff --git a/applications/Games/reversi/manifest.yml b/applications/Games/reversi/manifest.yml deleted file mode 100644 index 5ea038b5..00000000 --- a/applications/Games/reversi/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/reversi -description: "Reversi game, the game controls should be intuitive. Longs press on OK opens the menu to start a new game." -changelog: "v1.0 - Initial release, v1.1 - Various fixes, v1.2 - Various important fixes, v1.3 - Sync updates and latest API support, v1.4 - Sync with latest version" -author: "@dimat" -screenshots: - - "./img/2.png" - - "./img/3.png" - - "./img/1.png" diff --git a/applications/Games/rock_paper_scissors/README.md b/applications/Games/rock_paper_scissors/README.md deleted file mode 100644 index 056129d0..00000000 --- a/applications/Games/rock_paper_scissors/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![rock_paper_scissors](https://catalog.flipperzero.one/application/rock_paper_scissors/widget)](https://catalog.flipperzero.one/application/rock_paper_scissors/page) \ No newline at end of file diff --git a/applications/Games/rock_paper_scissors/manifest.yml b/applications/Games/rock_paper_scissors/manifest.yml deleted file mode 100644 index 066b075c..00000000 --- a/applications/Games/rock_paper_scissors/manifest.yml +++ /dev/null @@ -1,20 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jamisonderek/flipper-zero-tutorials.git - commit_sha: ca9efc0342c62ec96a5a5c39c3b9cf680899408e - subdir: subghz/plugins/rock_paper_scissors -description: "@./.flipcorg/README.md" -changelog: "v1.5 - datetime update v1.4 - Update description\nv1.3 - More robust radio communication\nv1.2 - Updated subghz API" -author: "@jamisonderek" -screenshots: - - "./.flipcorg/gallery/win.png" - - "./.flipcorg/gallery/main-menu.png" - - "./.flipcorg/gallery/host-game.png" - - "./.flipcorg/gallery/join-game.png" - - "./.flipcorg/gallery/playing-game.png" - - "./.flipcorg/gallery/game-over.png" - - "./.flipcorg/gallery/lost.png" - - "./.flipcorg/gallery/share.png" - - "./.flipcorg/gallery/share-github.png" - - "./.flipcorg/gallery/past-games.png" diff --git a/applications/Games/roots_of_life/README.md b/applications/Games/roots_of_life/README.md deleted file mode 100644 index 37fa68fa..00000000 --- a/applications/Games/roots_of_life/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![roots_of_life](https://catalog.flipperzero.one/application/roots_of_life/widget)](https://catalog.flipperzero.one/application/roots_of_life/page) \ No newline at end of file diff --git a/applications/Games/roots_of_life/manifest.yml b/applications/Games/roots_of_life/manifest.yml deleted file mode 100644 index 5e0fccb5..00000000 --- a/applications/Games/roots_of_life/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/rootoflife -description: "A zen-puzzle game for FlipperZero, puzzle made on GlobalGameJam23 (theme: Roots)" -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Sync updates and latest API support, v1.3 - Latest API fix, v1.4 - Sync with latest version" -author: "@Xorboo" -screenshots: - - "./img/2.png" - - "./img/3.png" - - "./img/1.png" diff --git a/applications/Games/rubiks_cube_scrambler/README.md b/applications/Games/rubiks_cube_scrambler/README.md deleted file mode 100644 index 16694158..00000000 --- a/applications/Games/rubiks_cube_scrambler/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![rubiks_cube_scrambler](https://catalog.flipperzero.one/application/rubiks_cube_scrambler/widget)](https://catalog.flipperzero.one/application/rubiks_cube_scrambler/page) \ No newline at end of file diff --git a/applications/Games/rubiks_cube_scrambler/manifest.yml b/applications/Games/rubiks_cube_scrambler/manifest.yml deleted file mode 100644 index 0a736b06..00000000 --- a/applications/Games/rubiks_cube_scrambler/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/rubiks_cube_scrambler -description: "App generates random moves to scramble a Rubik's cube." -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Fixes for new API, v1.3 - Sync updates and latest API support, v1.4 - Sync with latest version" -author: "@RaZeSloth" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/Games/scorched_tanks/README.md b/applications/Games/scorched_tanks/README.md deleted file mode 100644 index f1f3d82b..00000000 --- a/applications/Games/scorched_tanks/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![scorched_tanks](https://catalog.flipperzero.one/application/scorched_tanks/widget)](https://catalog.flipperzero.one/application/scorched_tanks/page) \ No newline at end of file diff --git a/applications/Games/scorched_tanks/manifest.yml b/applications/Games/scorched_tanks/manifest.yml deleted file mode 100644 index 51b3677f..00000000 --- a/applications/Games/scorched_tanks/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/scorched_tanks -description: "A flipper zero game inspired by scorched earth." -changelog: "v1.0 - Initial release, v1.1 - Icon fixes, v1.2 - Various fixes, v1.3 - Sync updates and latest API support, v1.4 - Sync with latest version" -author: "@jasniec" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/Games/secret_toggle/README.md b/applications/Games/secret_toggle/README.md deleted file mode 100644 index f22d4465..00000000 --- a/applications/Games/secret_toggle/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![secret_toggle](https://catalog.flipperzero.one/application/secret_toggle/widget)](https://catalog.flipperzero.one/application/secret_toggle/page) diff --git a/applications/Games/secret_toggle/manifest.yml b/applications/Games/secret_toggle/manifest.yml deleted file mode 100644 index c4df0a8f..00000000 --- a/applications/Games/secret_toggle/manifest.yml +++ /dev/null @@ -1,10 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/nostrumuva/secret_toggle.git - commit_sha: 82f7532c5f4df295d68adaa1ee4201f1bd403028 -description: "@README.md" -changelog: "v1.0 - Initial release" -author: "@nostrumuva" -screenshots: - - "screenshot.png" diff --git a/applications/Games/slotmachine/README.md b/applications/Games/slotmachine/README.md deleted file mode 100644 index 4b28b2ac..00000000 --- a/applications/Games/slotmachine/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![slotmachine](https://catalog.flipperzero.one/application/slotmachine/widget)](https://catalog.flipperzero.one/application/slotmachine/page) \ No newline at end of file diff --git a/applications/Games/slotmachine/manifest.yml b/applications/Games/slotmachine/manifest.yml deleted file mode 100644 index 057b53c4..00000000 --- a/applications/Games/slotmachine/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/flipperzero-slots -description: "Simple Slots simulator game" -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Updates and fixes, v1.3 - Sync updates and latest API support, v1.4 - Sync with latest version" -author: "@Daniel-dev-s" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/Games/snake20/README.md b/applications/Games/snake20/README.md deleted file mode 100644 index c606bf18..00000000 --- a/applications/Games/snake20/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![snake20](https://catalog.flipperzero.one/application/snake20/widget)](https://catalog.flipperzero.one/application/snake20/page) \ No newline at end of file diff --git a/applications/Games/snake20/manifest.yml b/applications/Games/snake20/manifest.yml deleted file mode 100644 index 9f66abbf..00000000 --- a/applications/Games/snake20/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/Snake_2 -description: "Advanced Snake Game (Remake of original Snake)" -changelog: "@changelog.md" -author: "@Willzvul" -screenshots: - - "./img/2.png" - - "./img/3.png" - - "./img/1.png" diff --git a/applications/Games/spaceimpactii985e/README.md b/applications/Games/spaceimpactii985e/README.md deleted file mode 100644 index 2c010022..00000000 --- a/applications/Games/spaceimpactii985e/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![spaceimpactii985e](https://catalog.flipperzero.one/application/spaceimpactii985e/widget)](https://catalog.flipperzero.one/application/spaceimpactii985e/page) \ No newline at end of file diff --git a/applications/Games/spaceimpactii985e/manifest.yml b/applications/Games/spaceimpactii985e/manifest.yml deleted file mode 100644 index 7ecc0ccd..00000000 --- a/applications/Games/spaceimpactii985e/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Erbonator3000/Flipper-Zero-Space-Impact-II - commit_sha: 5f618a1bb269cfea799699e7fe0f6567e2a8f9c9 -short_description: Space Impact II clone -description: | - Clone of classic mobile phone game Space Impact II -changelog: "@changelog.md" -screenshots: - - screenshots/gameplay.png diff --git a/applications/Games/sudoku/README.md b/applications/Games/sudoku/README.md deleted file mode 100644 index 348563d9..00000000 --- a/applications/Games/sudoku/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![sudoku](https://catalog.flipperzero.one/application/sudoku/widget)](https://catalog.flipperzero.one/application/sudoku/page) \ No newline at end of file diff --git a/applications/Games/sudoku/manifest.yml b/applications/Games/sudoku/manifest.yml deleted file mode 100644 index ccf6c7a4..00000000 --- a/applications/Games/sudoku/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/profelis/fz-sudoku.git - commit_sha: a9c4717826f28df5524811c73bcdf56ae54d256a -description: "@README_catalog.md" -changelog: "@CHANGELOG.md" -author: "@profelis" -screenshots: - - "./screenshots/main.png" - - "./screenshots/menu.png" diff --git a/applications/Games/swimmy_fish/manifest.yml b/applications/Games/swimmy_fish/manifest.yml deleted file mode 100644 index 639d4bf3..00000000 --- a/applications/Games/swimmy_fish/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Invizabel/fish - commit_sha: 0582188c9246c51c23093e2f3cbfa4402bca34c9 - subdir: FlipperZero -short_description: "A game about a fish" -changelog: "@./docs/changelog.md" -description: "Swimmy Fish. One goal, Survive. One button, Enter" -source_file: - - src/fish.c -screenshots: - - screenshots/screenshot.png -version: 2.0 diff --git a/applications/Games/t_rex_runner/README.md b/applications/Games/t_rex_runner/README.md deleted file mode 100644 index 32a8ea4a..00000000 --- a/applications/Games/t_rex_runner/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![t_rex_runner](https://catalog.flipperzero.one/application/t_rex_runner/widget)](https://catalog.flipperzero.one/application/t_rex_runner/page) \ No newline at end of file diff --git a/applications/Games/t_rex_runner/manifest.yml b/applications/Games/t_rex_runner/manifest.yml deleted file mode 100644 index 24f2fc78..00000000 --- a/applications/Games/t_rex_runner/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/t-rex-runner -description: "@README-catalog.md" -changelog: "v1.0 - Initial release, v1.1 - Description update, v1.2 - Various fixes, v1.3 - Various updates, v1.4 - Sync updates and latest API support, v1.5 - Sync with latest version" -author: "@Rrycbarm" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/Games/tarot/README.md b/applications/Games/tarot/README.md deleted file mode 100644 index 1ecfffcc..00000000 --- a/applications/Games/tarot/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![tarot](https://catalog.flipperzero.one/application/tarot/widget)](https://catalog.flipperzero.one/application/tarot/page) \ No newline at end of file diff --git a/applications/Games/tarot/manifest.yml b/applications/Games/tarot/manifest.yml deleted file mode 100644 index 0e265b08..00000000 --- a/applications/Games/tarot/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/pionaiki/fz-tarot.git - commit_sha: 0de4417aaa709ff6225c9548d6c52501726bc04c -short_description: Tarot spread for Flipper Zero -description: "This app can give you a linear spread of the major arcana cards, sourcing radio for the random number generator." -changelog: "Added a card browser, Added upside-down cards (togglable setting), The random number generator now sources the radio, Optimisations" -author: "pionaiki & tihyltew" -screenshots: - - .flipcorg/gallery/screenshot_1.png - - .flipcorg/gallery/screenshot_2.png diff --git a/applications/Games/tetris/README.md b/applications/Games/tetris/README.md deleted file mode 100644 index ce890de1..00000000 --- a/applications/Games/tetris/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![tetris](https://catalog.flipperzero.one/application/tetris/widget)](https://catalog.flipperzero.one/application/tetris/page) \ No newline at end of file diff --git a/applications/Games/tetris/manifest.yml b/applications/Games/tetris/manifest.yml deleted file mode 100644 index 708e6497..00000000 --- a/applications/Games/tetris/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: base_pack/tetris_game -description: "Tetris Game" -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Fixes for new API, Gameplay improvements, v1.3 - Various fixes, v1.4 - Sync updates and latest API support, v1.5 - Sync with latest version" -author: "@xMasterX & @jeffplang & @noiob" -screenshots: - - "./img/2.png" - - "./img/3.png" - - "./img/1.png" diff --git a/applications/Games/tictactoe/README.md b/applications/Games/tictactoe/README.md deleted file mode 100644 index f3c9a84e..00000000 --- a/applications/Games/tictactoe/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![tictactoe](https://catalog.flipperzero.one/application/tictactoe/widget)](https://catalog.flipperzero.one/application/tictactoe/page) \ No newline at end of file diff --git a/applications/Games/tictactoe/manifest.yml b/applications/Games/tictactoe/manifest.yml deleted file mode 100644 index cb571be0..00000000 --- a/applications/Games/tictactoe/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: base_pack/tictactoe_game -description: "Tic Tac Toe game, for 2 players, play on one device" -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "@xMasterX & @gotnull" -screenshots: - - "./img/1.png" diff --git a/applications/Games/umpire_indicator/README.md b/applications/Games/umpire_indicator/README.md deleted file mode 100644 index ad97a975..00000000 --- a/applications/Games/umpire_indicator/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![umpire_indicator](https://catalog.flipperzero.one/application/umpire_indicator/widget)](https://catalog.flipperzero.one/application/umpire_indicator/page) \ No newline at end of file diff --git a/applications/Games/umpire_indicator/manifest.yml b/applications/Games/umpire_indicator/manifest.yml deleted file mode 100644 index c4044a80..00000000 --- a/applications/Games/umpire_indicator/manifest.yml +++ /dev/null @@ -1,18 +0,0 @@ -author: '@RocketGod-git' -category: 'Games' -changelog: '@./docs/CHANGELOG.md' -description: '@./docs/README.md' -icon: 'icons/umpire_indicator_icon.png' -id: 'umpire_indicator' -name: 'Umpire Indicator' -screenshots: - - 'screenshots/Screenshot1.png' - - 'screenshots/Screenshot2.png' -short_description: 'Baseball and Softball balls, strikes, and outs tracker for umpires' -sourcecode: - location: - commit_sha: dd5b57a69da969911d8ba4ead96528ccfe616542 - origin: https://github.com/RocketGod-git/Flipper-Zero-Umpire-Indicator.git - subdir: - type: git -version: 0.1 diff --git a/applications/Games/videopoker/README.md b/applications/Games/videopoker/README.md deleted file mode 100644 index 5f3deb2a..00000000 --- a/applications/Games/videopoker/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![videopoker](https://catalog.flipperzero.one/application/videopoker/widget)](https://catalog.flipperzero.one/application/videopoker/page) \ No newline at end of file diff --git a/applications/Games/videopoker/manifest.yml b/applications/Games/videopoker/manifest.yml deleted file mode 100644 index d2f58f37..00000000 --- a/applications/Games/videopoker/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/videopoker -description: "Video poker is a casino game based on five-card draw poker" -changelog: "v1.0 - Initial release, v1.1 - Sync Updates, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "@PixlEmly" -screenshots: - - "./img/2.png" - - "./img/3.png" - - "./img/1.png" diff --git a/applications/Games/wave/manifest.yml b/applications/Games/wave/manifest.yml deleted file mode 100644 index d411c181..00000000 --- a/applications/Games/wave/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Sladkisnovraper/Wave-game-for-Flipper-Zero.git - commit_sha: "50bc424cb8c93ae45054b6ff7360578882a46f2a" -short_description: "AI generated game that replicates gameplay for a wave from Geometry Dash" -description: "@./README.md" -changelog: "@changelog.md" -author: "sergo" -screenshots: - - "./screenshots/1.png" - - "./screenshots/2.png" - - "./screenshots/3.png" - - "./screenshots/4.png" diff --git a/applications/Games/wolfenduino/manifest.yml b/applications/Games/wolfenduino/manifest.yml deleted file mode 100644 index 9ed0f506..00000000 --- a/applications/Games/wolfenduino/manifest.yml +++ /dev/null @@ -1,16 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/apfxtech/FlipperWolfenstein.git - commit_sha: c2a1dc8ec51af3b17d497a49c9de8f0225f8b648 - -short_description: Wolfenduino is a demake of id Software's Wolfenstein 3D originally created for the Arduboy FX and ported to Flipper Zero. -description: "@APPSTORE.md" -changelog: "@CHANGELOG.md" -screenshots: - - "package/screenshots/screen1.png" - - "package/screenshots/screen2.png" - - "package/screenshots/screen3.png" - - "package/screenshots/screen4.png" - - "package/screenshots/screen5.png" - - "package/screenshots/screen6.png" \ No newline at end of file diff --git a/applications/Games/xyz_vh8t_slots/manifest.yml b/applications/Games/xyz_vh8t_slots/manifest.yml deleted file mode 100644 index 7bb62bbc..00000000 --- a/applications/Games/xyz_vh8t_slots/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/vh8t/flipperzero-slots - commit_sha: b985279b3954330a5b059f3c787b98f447be8128 -description: "@README.md" -changelog: "@CHANGELOG.md" -screenshots: - - "./screenshots/screenshot-1.png" - - "./screenshots/screenshot-2.png" - - "./screenshots/screenshot-3.png" - - "./screenshots/screenshot-4.png" diff --git a/applications/Games/yatzee/README.md b/applications/Games/yatzee/README.md deleted file mode 100644 index 609f7f3d..00000000 --- a/applications/Games/yatzee/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![yatzee](https://catalog.flipperzero.one/application/yatzee/widget)](https://catalog.flipperzero.one/application/yatzee/page) \ No newline at end of file diff --git a/applications/Games/yatzee/manifest.yml b/applications/Games/yatzee/manifest.yml deleted file mode 100644 index 41c46f6b..00000000 --- a/applications/Games/yatzee/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/flipperzero-yatzee-main -description: "Yahtzee game" -changelog: "v1.0 - Initial release, v1.1 - Sync Updates, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "@emfleak" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/Games/zombiez/README.md b/applications/Games/zombiez/README.md deleted file mode 100644 index 06c250e5..00000000 --- a/applications/Games/zombiez/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![zombiez](https://catalog.flipperzero.one/application/zombiez/widget)](https://catalog.flipperzero.one/application/zombiez/page) \ No newline at end of file diff --git a/applications/Games/zombiez/manifest.yml b/applications/Games/zombiez/manifest.yml deleted file mode 100644 index aa4d9a80..00000000 --- a/applications/Games/zombiez/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: base_pack/zombiez -description: "Defend your walls from the zombies" -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "@DevMilanIan & @xMasterX, (original By @Dooskington)" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/Infrared/.gitkeep b/applications/Infrared/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/applications/Infrared/flame_rng/manifest.yml b/applications/Infrared/flame_rng/manifest.yml deleted file mode 100644 index d35bd436..00000000 --- a/applications/Infrared/flame_rng/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/OrionW06/Flame-RNG.git - commit_sha: 662baaab0566bec5c33a1332ade3fbc03623955a -short_description: An RNG intended for use with flames and other IR sources. -description: "@README.md" -changelog: "@./docs/changelog.md" -screenshots: - - screenshots/AllZeros.png - - screenshots/RandomNumber.png - - screenshots/SaveMessage.png diff --git a/applications/Infrared/flipper_xremote/README.md b/applications/Infrared/flipper_xremote/README.md deleted file mode 100644 index 3ebf9d35..00000000 --- a/applications/Infrared/flipper_xremote/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flipper_xremote](https://catalog.flipperzero.one/application/flipper_xremote/widget)](https://catalog.flipperzero.one/application/flipper_xremote/page) \ No newline at end of file diff --git a/applications/Infrared/flipper_xremote/manifest.yml b/applications/Infrared/flipper_xremote/manifest.yml deleted file mode 100644 index 44e81c55..00000000 --- a/applications/Infrared/flipper_xremote/manifest.yml +++ /dev/null @@ -1,16 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/kala13x/flipper-xremote - commit_sha: 95e629eff960c71754d0a2768a54883df066a588 -description: "@./docs/README.md" -changelog: "@./docs/changelog.md" -author: "@kala13x" -screenshots: - - "./.flipcorg/gallery/screen1.png" - - "./.flipcorg/gallery/screen2.png" - - "./.flipcorg/gallery/screen3.png" - - "./.flipcorg/gallery/screen4.png" - - "./.flipcorg/gallery/screen5.png" - - "./.flipcorg/gallery/screen6.png" - - "./.flipcorg/gallery/screen7.png" diff --git a/applications/Infrared/hitachi_ac_remote/README.md b/applications/Infrared/hitachi_ac_remote/README.md deleted file mode 100644 index c88714dd..00000000 --- a/applications/Infrared/hitachi_ac_remote/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![hitachi_ac_remote](https://catalog.flipperzero.one/application/hitachi_ac_remote/widget)](https://catalog.flipperzero.one/application/hitachi_ac_remote/page) diff --git a/applications/Infrared/hitachi_ac_remote/manifest.yml b/applications/Infrared/hitachi_ac_remote/manifest.yml deleted file mode 100644 index 941e114b..00000000 --- a/applications/Infrared/hitachi_ac_remote/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/dogtopus/flipperzero-hitachi-ac-remote.git - commit_sha: 4cbf740e7a1fd7036e93be2a42b7e6fa4a4cc956 -short_description: "Hitachi Air Conditioner remote controller" -description: "@./README_CATALOG.md" -changelog: "@./CHANGELOG.md" -screenshots: - - "./img/1.png" - - "./img/2.png" - - "./img/screenshot3.png" diff --git a/applications/Infrared/htw_ac_remote/README.md b/applications/Infrared/htw_ac_remote/README.md deleted file mode 100644 index fa631b1d..00000000 --- a/applications/Infrared/htw_ac_remote/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![htw_ac_remote](https://catalog.flipperzero.one/application/htw_ac_remote/widget)](https://catalog.flipperzero.one/application/htw_ac_remote/page) diff --git a/applications/Infrared/htw_ac_remote/manifest.yml b/applications/Infrared/htw_ac_remote/manifest.yml deleted file mode 100644 index e8b84372..00000000 --- a/applications/Infrared/htw_ac_remote/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/sokogen/flipperzero-htw-ac-remote.git - commit_sha: 9f66b7f3dc34df21baeccb95762da6e3547ed4c5 -short_description: "HTW air conditioner IR remote control" -description: "@./README_CATALOG.md" -changelog: "@./CHANGELOG.md" -screenshots: - - "./docs/screenshots/main.png" - - "./docs/screenshots/timer.png" - - "./docs/screenshots/settings.png" diff --git a/applications/Infrared/ir_intervalometer/README.md b/applications/Infrared/ir_intervalometer/README.md deleted file mode 100644 index 70c45af9..00000000 --- a/applications/Infrared/ir_intervalometer/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![ir_intervalometer](https://catalog.flipperzero.one/application/ir_intervalometer/widget)](https://catalog.flipperzero.one/application/ir_intervalometer/page) diff --git a/applications/Infrared/ir_intervalometer/manifest.yml b/applications/Infrared/ir_intervalometer/manifest.yml deleted file mode 100644 index e0f2c61d..00000000 --- a/applications/Infrared/ir_intervalometer/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Nitepone/flipper-intervalometer.git - commit_sha: a80d4f530ff0da18ea91b5183c1131a766e63642 -description: "Intervalometer for Canon, Nikon, and Sony cameras. Uses IR shutter release." -changelog: "v1.0 - Initial release, v1.2 - Additional camera support, v2.2 - Bugfix for New Flipper SDK" -author: "@Nitepone" -screenshots: - - "./doc/img/running-intervalometer.png" - - "./doc/img/settings-edit.png" - - "./doc/img/settings-burst.png" diff --git a/applications/Infrared/ir_scope/README.md b/applications/Infrared/ir_scope/README.md deleted file mode 100644 index 80ef866b..00000000 --- a/applications/Infrared/ir_scope/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![ir_scope](https://catalog.flipperzero.one/application/ir_scope/widget)](https://catalog.flipperzero.one/application/ir_scope/page) \ No newline at end of file diff --git a/applications/Infrared/ir_scope/manifest.yml b/applications/Infrared/ir_scope/manifest.yml deleted file mode 100644 index 3a2d08c0..00000000 --- a/applications/Infrared/ir_scope/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: base_pack/ir_scope -description: "App allows to see incoming IR signals." -changelog: "v1.0 - Initial release, v1.1 - Various fixes, v1.2 - Various important fixes, v1.3 - Sync updates and latest API support, v1.4 - Sync with latest version" -author: "@kallanreed" -screenshots: - - "./img/1.png" diff --git a/applications/Infrared/lidar_emulator/README.md b/applications/Infrared/lidar_emulator/README.md deleted file mode 100644 index caa561eb..00000000 --- a/applications/Infrared/lidar_emulator/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![lidar_emulator](https://catalog.flipperzero.one/application/lidar_emulator/widget)](https://catalog.flipperzero.one/application/lidar_emulator/page) \ No newline at end of file diff --git a/applications/Infrared/lidar_emulator/manifest.yml b/applications/Infrared/lidar_emulator/manifest.yml deleted file mode 100644 index 90121c6a..00000000 --- a/applications/Infrared/lidar_emulator/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/regaly/flipperzero-lidar_emulator.git - commit_sha: d2092a01ae627129c24c257102f619813a61986e -description: "@./README.md" -short_description: This app can be used to emulate infrared signals of different LIDARs. -changelog: "@./CHANGELOG.md" -author: "regaly" -screenshots: - - "./screenshots/main_menu.png" - - "./screenshots/submenu_predefined_lidar_guns.png" diff --git a/applications/Infrared/midea_ac_remote/README.md b/applications/Infrared/midea_ac_remote/README.md deleted file mode 100644 index 3c2963ef..00000000 --- a/applications/Infrared/midea_ac_remote/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![midea_ac_remote](https://catalog.flipperzero.one/application/midea_ac_remote/widget)](https://catalog.flipperzero.one/application/midea_ac_remote/page) \ No newline at end of file diff --git a/applications/Infrared/midea_ac_remote/manifest.yml b/applications/Infrared/midea_ac_remote/manifest.yml deleted file mode 100644 index 1f3ae492..00000000 --- a/applications/Infrared/midea_ac_remote/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xakep666/flipperzero-midea-ac-remote.git - commit_sha: b92c426cfe7fb3c78e5d9d4480d50d3a84758932 -short_description: "Midea Electric Air Conditioner remote control" -description: "@./README_CATALOG.md" -changelog: "@./CHANGELOG.md" -screenshots: - - "./img/screenshot_landscape.png" - - "./img/screenshot_silent_mode_landscape.png" diff --git a/applications/Infrared/mitsubishi_ac_remote/README.md b/applications/Infrared/mitsubishi_ac_remote/README.md deleted file mode 100644 index c4e23477..00000000 --- a/applications/Infrared/mitsubishi_ac_remote/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![mitsubishi_ac_remote](https://catalog.flipperzero.one/application/mitsubishi_ac_remote/widget)](https://catalog.flipperzero.one/application/mitsubishi_ac_remote/page) \ No newline at end of file diff --git a/applications/Infrared/mitsubishi_ac_remote/manifest.yml b/applications/Infrared/mitsubishi_ac_remote/manifest.yml deleted file mode 100644 index 373c3298..00000000 --- a/applications/Infrared/mitsubishi_ac_remote/manifest.yml +++ /dev/null @@ -1,10 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/achistyakov/flipperzero-mitsubishi-ac-remote.git - commit_sha: 22ca60ccb21395ce8c1681d40140c1914912570f -short_description: "Mitsubishi Electric Air Conditioner remote control" -description: "@./README_CATALOG.md" -changelog: "@./CHANGELOG.md" -screenshots: - - "./img/1.png" diff --git a/applications/Infrared/pause_timer/manifest.yml b/applications/Infrared/pause_timer/manifest.yml deleted file mode 100644 index 46751c0e..00000000 --- a/applications/Infrared/pause_timer/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Matt-London/pause_timer.git - commit_sha: 71d570d22f61acf642fce098d6524a251ca7d10f - -short_description: Pause your show when the ad break ends -description: "@APPSTORE.md" -changelog: "@CHANGELOG.md" -screenshots: - - "screenshots/pause_timer_numpad_entry.png" - - "screenshots/pause_timer_countdown.png" - - "screenshots/pause_timer_countdown_complete.png" - - "screenshots/pause_timer_IR_learning.png" diff --git a/applications/Infrared/tamagometer_companion/README.md b/applications/Infrared/tamagometer_companion/README.md deleted file mode 100644 index 928ac64c..00000000 --- a/applications/Infrared/tamagometer_companion/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![tamagometer_companion](https://catalog.flipperzero.one/application/tamagometer_companion/widget)](https://catalog.flipperzero.one/application/tamagometer_companion/page) \ No newline at end of file diff --git a/applications/Infrared/tamagometer_companion/manifest.yml b/applications/Infrared/tamagometer_companion/manifest.yml deleted file mode 100644 index 5e6f0621..00000000 --- a/applications/Infrared/tamagometer_companion/manifest.yml +++ /dev/null @@ -1,16 +0,0 @@ -sourcecode: - type: git - location: - ## Specify the git URL of your repository - origin: https://github.com/zacharesmer/tamagometer-companion-flipper.git - ## Put the full commit SHA of the commit with the app's code you want to submit - commit_sha: 0a0251bb8bf0f7eccc22bd96850f3f56c812a4e7 - ## (Optional) If your app is located in a subdirectory of the repository, specify it here - # subdir: . -## For 'description' and 'changelog', you can use limited markdown syntax -## You can also specify a file from your app's repository as a source with @ -description: "@description.md" -changelog: "@CHANGELOG.md" -## Unmodified screenshots from qFlipper -screenshots: - - screenshots/screenshot1.png diff --git a/applications/Infrared/timed_remote/README.md b/applications/Infrared/timed_remote/README.md deleted file mode 100644 index 921ed680..00000000 --- a/applications/Infrared/timed_remote/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![timed_remote](https://catalog.flipperzero.one/application/timed_remote/widget)](https://catalog.flipperzero.one/application/timed_remote/page) diff --git a/applications/Infrared/timed_remote/manifest.yml b/applications/Infrared/timed_remote/manifest.yml deleted file mode 100644 index 9430e0a3..00000000 --- a/applications/Infrared/timed_remote/manifest.yml +++ /dev/null @@ -1,20 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/anders-dc/timed-remote.git - commit_sha: 3609fbfe951db5e1fac604ce4e0570bb7b7a926e -short_description: Send IR commands after timed duration. -description: | - Send IR commands after a configurable time delay. - - Browse and select IR signals from existing .ir files - - **Countdown Mode**: Set a timer (HH:MM:SS) and send the signal when it completes - - **Scheduled Mode**: Send the signal at a specific time of day - - **Repeat Options**: Off, Unlimited, or 1-99 repeats (countdown mode only) - - Live countdown display with repeat progress tracking, press Back to cancel -changelog: "@CHANGELOG.md" -author: "A. Damsgaard" -screenshots: - - screenshots/00-ir-browse.png - - screenshots/01-timer-config.png - - screenshots/02-timer-config.png - - screenshots/03-timer-running.png diff --git a/applications/Infrared/xbox_controller/README.md b/applications/Infrared/xbox_controller/README.md deleted file mode 100644 index 63dc4eaa..00000000 --- a/applications/Infrared/xbox_controller/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![xbox_controller](https://catalog.flipperzero.one/application/xbox_controller/widget)](https://catalog.flipperzero.one/application/xbox_controller/page) \ No newline at end of file diff --git a/applications/Infrared/xbox_controller/manifest.yml b/applications/Infrared/xbox_controller/manifest.yml deleted file mode 100644 index 57d4d197..00000000 --- a/applications/Infrared/xbox_controller/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/gebeto/flipper-xbox-controller - commit_sha: 6b429c5b853c348470d5b6019c37b2ec5067a397 -description: "@./docs/README.md" -changelog: "@./docs/changelog.md" -author: "@gebeto" -screenshots: - - "./img/screenshot_1.png" - - "./img/screenshot_2.png" - - "./img/screenshot_3.png" diff --git a/applications/Infrared/xremote/README.md b/applications/Infrared/xremote/README.md deleted file mode 100644 index bc156fd9..00000000 --- a/applications/Infrared/xremote/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![xremote](https://catalog.flipperzero.one/application/xremote/widget)](https://catalog.flipperzero.one/application/xremote/page) \ No newline at end of file diff --git a/applications/Infrared/xremote/manifest.yml b/applications/Infrared/xremote/manifest.yml deleted file mode 100644 index d96e4ca1..00000000 --- a/applications/Infrared/xremote/manifest.yml +++ /dev/null @@ -1,15 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/leedave/flipper-zero-cross-remote - commit_sha: c763004922bbaf712236231acd49fada028dd376 -description: "@./docs/README.md" -changelog: "@./docs/changelog.md" -author: "Leedave" -screenshots: - - "./screenshots/xremote_1.png" - - "./screenshots/xremote_2.png" - - "./screenshots/xremote_3.png" - - "./screenshots/xremote_4.png" - - "./screenshots/xremote_5.png" - - "./screenshots/xremote_6.png" diff --git a/applications/Media/.gitkeep b/applications/Media/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/applications/Media/atm/manifest.yml b/applications/Media/atm/manifest.yml deleted file mode 100644 index 43c69574..00000000 --- a/applications/Media/atm/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/apfxtech/FlipperATM.git - commit_sha: ef2250c528edeecd3b92643017a3d81ca0fb3403 - -short_description: ATM player -description: "@APPSTORE.md" -changelog: "@CHANGELOG.md" -screenshots: - - "package/screenshots/1.png" - - "package/screenshots/2.png" \ No newline at end of file diff --git a/applications/Media/bpm_tapper/README.md b/applications/Media/bpm_tapper/README.md deleted file mode 100644 index 7b93be6b..00000000 --- a/applications/Media/bpm_tapper/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![bpm_tapper](https://catalog.flipperzero.one/application/bpm_tapper/widget)](https://catalog.flipperzero.one/application/bpm_tapper/page) \ No newline at end of file diff --git a/applications/Media/bpm_tapper/manifest.yml b/applications/Media/bpm_tapper/manifest.yml deleted file mode 100644 index 952cc37f..00000000 --- a/applications/Media/bpm_tapper/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/bpmtapper -description: "Tap center button to measure BPM" -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "@panki27" -screenshots: - - "./img/1.png" diff --git a/applications/Media/dvd_screensaver/README.md b/applications/Media/dvd_screensaver/README.md deleted file mode 100644 index 6b23d337..00000000 --- a/applications/Media/dvd_screensaver/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![dvd_screensaver](https://catalog.flipperzero.one/application/dvd_screensaver/widget)](https://catalog.flipperzero.one/application/dvd_screensaver/page) \ No newline at end of file diff --git a/applications/Media/dvd_screensaver/manifest.yml b/applications/Media/dvd_screensaver/manifest.yml deleted file mode 100644 index 64ee53c3..00000000 --- a/applications/Media/dvd_screensaver/manifest.yml +++ /dev/null @@ -1,9 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/shantih19/flipper_dvd_screensaver.git - commit_sha: ac3524391a92e64c435673c1bf7cccf967999b89 -description: "DVD screensaver clone." -changelog: "v1.1 - Some randomness" -screenshots: - - "screenshot.png" \ No newline at end of file diff --git a/applications/Media/executor_keychain/README.md b/applications/Media/executor_keychain/README.md deleted file mode 100644 index 29a0438c..00000000 --- a/applications/Media/executor_keychain/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![executor_keychain](https://catalog.flipperzero.one/application/executor_keychain/widget)](https://catalog.flipperzero.one/application/executor_keychain/page) \ No newline at end of file diff --git a/applications/Media/executor_keychain/manifest.yml b/applications/Media/executor_keychain/manifest.yml deleted file mode 100644 index 66faacf4..00000000 --- a/applications/Media/executor_keychain/manifest.yml +++ /dev/null @@ -1,18 +0,0 @@ -author: 'Esteban Fuentealba' -category: 'Media' -changelog: '@./.catalog/changelog.md' -description: "@./.catalog/README.md" -icon: 'assets/executor_keychain_10px.png' -id: 'executor_keychain' -name: 'Flipper Keyller' -screenshots: - - '.catalog/screenshots/1.png' - - '.catalog/screenshots/2.png' -short_description: 'Flipper Keyller is an app for the Flipper Zero that emulates the iconic sounds of the classic 80s keychain.' -sourcecode: - location: - commit_sha: ffea64ec5a443e8ef08707fd20d431b9601d8f1b - origin: https://github.com/EstebanFuentealba/Flipper-Keyller.git - subdir: - type: git -version: 0.1 diff --git a/applications/Media/flizzer_tracker/README.md b/applications/Media/flizzer_tracker/README.md deleted file mode 100644 index 93e0482f..00000000 --- a/applications/Media/flizzer_tracker/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flizzer_tracker](https://catalog.flipperzero.one/application/flizzer_tracker/widget)](https://catalog.flipperzero.one/application/flizzer_tracker/page) \ No newline at end of file diff --git a/applications/Media/flizzer_tracker/manifest.yml b/applications/Media/flizzer_tracker/manifest.yml deleted file mode 100644 index 17519950..00000000 --- a/applications/Media/flizzer_tracker/manifest.yml +++ /dev/null @@ -1,10 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/LTVA1/flizzer_tracker.git - commit_sha: f27480df8c8d7da1e972104497c1c2c1a4786f4d -description: "@README_CATALOG.md" -changelog: "@./docs/changelog.md" -screenshots: - - screenshots/pat.png - - screenshots/inst.png diff --git a/applications/Media/fzspground/manifest.yml b/applications/Media/fzspground/manifest.yml deleted file mode 100644 index 6199813f..00000000 --- a/applications/Media/fzspground/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/alanfortlink/fzspground.git - commit_sha: fd3c2480001828801434c4f2616739daca50fbc2 -short_description: Space Playground for Flipper Zero -description: | - This is a screensaver that simulates a space with planets and asteroids. - You can configure the simlation to your liking, including the number of planets, gravity, and speed. -changelog: "./changelog.md" -screenshots: - - screenshots/ss2.png - - screenshots/ss1.png diff --git a/applications/Media/image_viewer/README.md b/applications/Media/image_viewer/README.md deleted file mode 100644 index 2133d497..00000000 --- a/applications/Media/image_viewer/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![image_viewer](https://catalog.flipperzero.one/application/image_viewer/widget)](https://catalog.flipperzero.one/application/image_viewer/page) \ No newline at end of file diff --git a/applications/Media/image_viewer/manifest.yml b/applications/Media/image_viewer/manifest.yml deleted file mode 100644 index f2ed6563..00000000 --- a/applications/Media/image_viewer/manifest.yml +++ /dev/null @@ -1,10 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/polioan/flipper-zero-image-viewer.git - commit_sha: 82fbcb5d669bd3e6cbf7af7593ad8efe0f19f1bd -description: "@./README.md" -changelog: "@./CHANGELOG.md" -author: "@polioan" -screenshots: - - "./screenshot.png" diff --git a/applications/Media/metronome/README.md b/applications/Media/metronome/README.md deleted file mode 100644 index 1c7a28fd..00000000 --- a/applications/Media/metronome/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![metronome](https://catalog.flipperzero.one/application/metronome/widget)](https://catalog.flipperzero.one/application/metronome/page) \ No newline at end of file diff --git a/applications/Media/metronome/manifest.yml b/applications/Media/metronome/manifest.yml deleted file mode 100644 index 501b79dc..00000000 --- a/applications/Media/metronome/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: base_pack/metronome -description: "Metronome app" -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Various fixes, v1.3 - Sync updates and latest API support, v1.4 - Sync with latest version" -author: "@panki27 & @xMasterX" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/Media/morse_code/README.md b/applications/Media/morse_code/README.md deleted file mode 100644 index acf0bcd0..00000000 --- a/applications/Media/morse_code/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![morse_code](https://catalog.flipperzero.one/application/morse_code/widget)](https://catalog.flipperzero.one/application/morse_code/page) \ No newline at end of file diff --git a/applications/Media/morse_code/manifest.yml b/applications/Media/morse_code/manifest.yml deleted file mode 100644 index 81168f9d..00000000 --- a/applications/Media/morse_code/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: base_pack/morse_code -description: "Simple Morse Code parser" -changelog: "v1.0 - Initial release, v1.1 - Sync Updates, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "@wh00hw & @xMasterX" -screenshots: - - "./img/1.png" diff --git a/applications/Media/morse_master/manifest.yml b/applications/Media/morse_master/manifest.yml deleted file mode 100644 index b709faeb..00000000 --- a/applications/Media/morse_master/manifest.yml +++ /dev/null @@ -1,15 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/w84death/morse-master.git - commit_sha: f6028bcfcbe6f14e94e6c4684db45759d11cc1b1 -description: "A comprehensive Morse code learning and practice app." -version: 1.0 -changelog: "@CHANGELOG.md" -author: "Krzysztof Krystian Jankowski" -screenshots: - - "media/titlescreen.png" - - "media/menu.png" - - "media/learn.png" - - "media/practice.png" - - "media/help.png" diff --git a/applications/Media/music_player/README.md b/applications/Media/music_player/README.md deleted file mode 100644 index f31b8151..00000000 --- a/applications/Media/music_player/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![music_player](https://catalog.flipperzero.one/application/music_player/widget)](https://catalog.flipperzero.one/application/music_player/page) \ No newline at end of file diff --git a/applications/Media/music_player/manifest.yml b/applications/Media/music_player/manifest.yml deleted file mode 100644 index a2e9586e..00000000 --- a/applications/Media/music_player/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/flipperdevices/flipperzero-good-faps.git - commit_sha: 13f9f8d753a6196201dcf87a35b0eb82b26c1361 - subdir: music_player -description: "@.catalog/README.md" -changelog: "@.catalog/changelog.md" -author: "@DrZlo13" -screenshots: - - ".catalog/screenshots/1.png" - - ".catalog/screenshots/2.png" diff --git a/applications/Media/ocarina/README.md b/applications/Media/ocarina/README.md deleted file mode 100644 index 2724e346..00000000 --- a/applications/Media/ocarina/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![ocarina](https://catalog.flipperzero.one/application/ocarina/widget)](https://catalog.flipperzero.one/application/ocarina/page) \ No newline at end of file diff --git a/applications/Media/ocarina/manifest.yml b/applications/Media/ocarina/manifest.yml deleted file mode 100644 index c3442575..00000000 --- a/applications/Media/ocarina/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/ocarina -description: "A basic Ocarina (of Time), Controls are the same as the N64 version of the Ocarina of Time" -changelog: "v1.0 - Initial release, v1.1 - Sync Updates, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "@invalidna-me" -screenshots: - - "./img/1.png" diff --git a/applications/Media/text2sam/README.md b/applications/Media/text2sam/README.md deleted file mode 100644 index aaae8786..00000000 --- a/applications/Media/text2sam/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![text2sam](https://catalog.flipperzero.one/application/text2sam/widget)](https://catalog.flipperzero.one/application/text2sam/page) \ No newline at end of file diff --git a/applications/Media/text2sam/manifest.yml b/applications/Media/text2sam/manifest.yml deleted file mode 100644 index 67e22fcb..00000000 --- a/applications/Media/text2sam/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/flipperzero-text2sam -description: "@README-catalog.md" -changelog: "v1.0 - Initial release, v1.1 - Description update, v1.2 - Sync Updates, v1.3 - Fixes for latest API, v1.4 - Sync updates and latest API support, v1.5 - Sync with latest version" -author: "@Round-Pi & (Fixes by @Willy-JL)" -screenshots: - - "./img/1.png" diff --git a/applications/Media/tuning_fork/README.md b/applications/Media/tuning_fork/README.md deleted file mode 100644 index 24e105c1..00000000 --- a/applications/Media/tuning_fork/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![tuning_fork](https://catalog.flipperzero.one/application/tuning_fork/widget)](https://catalog.flipperzero.one/application/tuning_fork/page) \ No newline at end of file diff --git a/applications/Media/tuning_fork/manifest.yml b/applications/Media/tuning_fork/manifest.yml deleted file mode 100644 index 2cc9fd05..00000000 --- a/applications/Media/tuning_fork/manifest.yml +++ /dev/null @@ -1,19 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/besya/flipperzero-tuning-fork.git - commit_sha: dd789f91c65960f24e35a93d506520cae05fc04f -id: tuning_fork -name: Tuning Fork -category: Media -version: 2.1 -icon: tuning_fork_icon.png -short_description: Tuning fork for tuning musical instruments and more -description: "@./.catalog/README.md" -changelog: "@./.catalog/CHANGELOG.md" -author: "@besya" -screenshots: - - .catalog/screenshots/screenshot1.png - - .catalog/screenshots/screenshot2.png - - .catalog/screenshots/screenshot3.png - - .catalog/screenshots/screenshot4.png diff --git a/applications/Media/usb_midi/README.md b/applications/Media/usb_midi/README.md deleted file mode 100644 index 0f6163e3..00000000 --- a/applications/Media/usb_midi/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![usb_midi](https://catalog.flipperzero.one/application/usb_midi/widget)](https://catalog.flipperzero.one/application/usb_midi/page) diff --git a/applications/Media/usb_midi/manifest.yml b/applications/Media/usb_midi/manifest.yml deleted file mode 100644 index efa33109..00000000 --- a/applications/Media/usb_midi/manifest.yml +++ /dev/null @@ -1,10 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/kribesk/flipper-zero-usb-midi.git - commit_sha: a79eafb38e94ed9dac54c7e1f0d50526877d0996 -description: "@README.md" -changelog: "@.catalog/changelog.md" -author: "@Kribesk (forked from @DrZlo13)" -screenshots: - - ".catalog/screenshots/1.png" diff --git a/applications/Media/video_player/README.md b/applications/Media/video_player/README.md deleted file mode 100644 index 841b4b15..00000000 --- a/applications/Media/video_player/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![video_player](https://catalog.flipperzero.one/application/video_player/widget)](https://catalog.flipperzero.one/application/video_player/page) \ No newline at end of file diff --git a/applications/Media/video_player/manifest.yml b/applications/Media/video_player/manifest.yml deleted file mode 100644 index df96faec..00000000 --- a/applications/Media/video_player/manifest.yml +++ /dev/null @@ -1,10 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/LTVA1/flipper-zero-video-player.git - commit_sha: a47ffb2a10b28cc7af5bfd833b8e91ad08fea91f - subdir: flipper_project -description: "@README_CATALOG.md" -changelog: "@./docs/changelog.md" -screenshots: - - screenshots/demo_screen.png diff --git a/applications/Media/wav_player/README.md b/applications/Media/wav_player/README.md deleted file mode 100644 index deba6ac3..00000000 --- a/applications/Media/wav_player/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![wav_player](https://catalog.flipperzero.one/application/wav_player/widget)](https://catalog.flipperzero.one/application/wav_player/page) \ No newline at end of file diff --git a/applications/Media/wav_player/manifest.yml b/applications/Media/wav_player/manifest.yml deleted file mode 100644 index c22f54e0..00000000 --- a/applications/Media/wav_player/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: base_pack/wav_player -description: "Audio player for WAV files, recommended to convert files to unsigned 8-bit PCM stereo, but it may work with others too" -changelog: "v1.0 - Initial release, v1.1 - Sync Updates, v1.2 - Sync updates and latest API support, v1.3-v1.5 - Fixes and improvements" -author: "@DrZlo13 & (ported, fixed by @xMasterX), (improved by @LTVA1)" -screenshots: - - "./img/2.png" - - "./img/3.png" - - "./img/1.png" diff --git a/applications/Media/zero_tracker/README.md b/applications/Media/zero_tracker/README.md deleted file mode 100644 index 9bc4c24c..00000000 --- a/applications/Media/zero_tracker/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![zero_tracker](https://catalog.flipperzero.one/application/zero_tracker/widget)](https://catalog.flipperzero.one/application/zero_tracker/page) \ No newline at end of file diff --git a/applications/Media/zero_tracker/manifest.yml b/applications/Media/zero_tracker/manifest.yml deleted file mode 100644 index ae0989d1..00000000 --- a/applications/Media/zero_tracker/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/musictracker -description: "App plays hardcoded tracker song" -changelog: "v1.0 - Initial release, v1.1 - Fixed icons folder, v1.2 - Fixes for new API, v1.3 - Sync updates and latest API support, v1.4 - Sync with latest version" -author: "@DrZlo13" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/NFC/.gitkeep b/applications/NFC/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/applications/NFC/cyborg_detector/README.md b/applications/NFC/cyborg_detector/README.md deleted file mode 100644 index 4ac9a7a4..00000000 --- a/applications/NFC/cyborg_detector/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![cyborg_detector](https://catalog.flipperzero.one/application/cyborg_detector/widget)](https://catalog.flipperzero.one/application/cyborg_detector/page) \ No newline at end of file diff --git a/applications/NFC/cyborg_detector/manifest.yml b/applications/NFC/cyborg_detector/manifest.yml deleted file mode 100644 index 77a6ab15..00000000 --- a/applications/NFC/cyborg_detector/manifest.yml +++ /dev/null @@ -1,17 +0,0 @@ -author: '@RocketGod-git' -category: 'NFC' -changelog: '@./docs/CHANGELOG.md' -description: '@./docs/README.md' -icon: 'icons/cyborg_detector_icon.png' -id: 'cyborg_detector' -name: 'Cyborg Detector' -screenshots: - - 'screenshots/Screenshot1.png' -short_description: 'App generates a continous NFC field to make body mod implant LEDs glow. Tested on a Dangerous Things xSIID.' -sourcecode: - location: - commit_sha: 62bf86337f15a4d9618af33f8445af6e98851b6d - origin: https://github.com/RocketGod-git/Flipper-Zero-Cyborg-Detector.git - subdir: - type: git -version: 1.1 diff --git a/applications/NFC/metroflip/README.md b/applications/NFC/metroflip/README.md deleted file mode 100644 index 9199082c..00000000 --- a/applications/NFC/metroflip/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![metroflip](https://catalog.flipperzero.one/application/metroflip/widget)](https://catalog.flipperzero.one/application/metroflip/page) \ No newline at end of file diff --git a/applications/NFC/metroflip/manifest.yml b/applications/NFC/metroflip/manifest.yml deleted file mode 100644 index a93d820c..00000000 --- a/applications/NFC/metroflip/manifest.yml +++ /dev/null @@ -1,30 +0,0 @@ -author: 'luu176' -category: 'NFC' -changelog: '@./CHANGELOG.md' -description: '@./app/README.md' -icon: 'icon.png' -id: 'metroflip' -name: 'Metroflip' -screenshots: - - 'screenshots/Menu-Top.png' - - 'screenshots/Menu-Middle.png' - - 'screenshots/Navigo.png' - - 'screenshots/Suica_Balance.png' - - 'screenshots/Suica_Vend1.png' - - 'screenshots/Suica_Vend2.png' - - 'screenshots/Suica_Issue1.png' - - 'screenshots/Suica_Store1.png' - - 'screenshots/Suica_Train1.png' - - 'screenshots/Suica_Train2.png' - - 'screenshots/Suica_Issue2.png' - - 'screenshots/Suica_Store2.png' - - -short_description: 'An implementation of Metrodroid on the Flipper Zero' -sourcecode: - location: - commit_sha: 3548f18ae0dfd41fe592561c31e26a6c29154aa2 - origin: https://github.com/luu176/Metroflip - subdir: - type: git -version: 1.0 diff --git a/applications/NFC/mfc_editor/README.md b/applications/NFC/mfc_editor/README.md deleted file mode 100644 index a9a12a73..00000000 --- a/applications/NFC/mfc_editor/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![mfc_editor](https://catalog.flipperzero.one/application/mfc_editor/widget)](https://catalog.flipperzero.one/application/mfc_editor/page) \ No newline at end of file diff --git a/applications/NFC/mfc_editor/manifest.yml b/applications/NFC/mfc_editor/manifest.yml deleted file mode 100644 index 3a201c87..00000000 --- a/applications/NFC/mfc_editor/manifest.yml +++ /dev/null @@ -1,15 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/TollyH/flipper-apps.git - commit_sha: 3f7d07b1655ef5277e650156846e1bd8357a2b3c - subdir: mfc-editor -description: "@.catalog/README.md" -changelog: "@.catalog/CHANGELOG.md" -screenshots: - - ".catalog/screenshots/1.png" - - ".catalog/screenshots/2.png" - - ".catalog/screenshots/3.png" - - ".catalog/screenshots/4.png" - - ".catalog/screenshots/5.png" - - ".catalog/screenshots/6.png" diff --git a/applications/NFC/mfkey/README.md b/applications/NFC/mfkey/README.md deleted file mode 100644 index 347b5120..00000000 --- a/applications/NFC/mfkey/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![mfkey](https://catalog.flipperzero.one/application/mfkey/widget)](https://catalog.flipperzero.one/application/mfkey/page) diff --git a/applications/NFC/mfkey/manifest.yml b/applications/NFC/mfkey/manifest.yml deleted file mode 100644 index 92ca288b..00000000 --- a/applications/NFC/mfkey/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/flipperdevices/flipperzero-good-faps.git - commit_sha: 223db798266e8fcd1eedf772ecee675bf4db2f2c - subdir: mfkey -description: "@.catalog/README.md" -changelog: "@.catalog/changelog.md" -author: "@noproto" -screenshots: - - ".catalog/screenshots/1.png" - - ".catalog/screenshots/2.png" diff --git a/applications/NFC/miband_nfc/README.md b/applications/NFC/miband_nfc/README.md deleted file mode 100644 index 81c60a69..00000000 --- a/applications/NFC/miband_nfc/README.md +++ /dev/null @@ -1,32 +0,0 @@ -## Status - -[![miband_nfc_writer](https://catalog.flipperzero.one/application/miband_nfc_writer/widget)]( -https://catalog.flipperzero.one/application/miband_nfc_writer/page -) - ---- - -## MiBand NFC Writer - -MiBand NFC Writer is an NFC application for **Flipper Zero** designed to interact -with **Xiaomi Mi Band NFC devices**. - -The application allows reading, writing and emulating NFC data stored on Mi Band -devices. - ---- - -## Features - -- Read Mi Band NFC data -- Write supported NFC blocks -- Emulate Mi Band NFC cards -- Verify card integrity -- Designed for Flipper Zero (F7) - ---- - -## Disclaimer - -This application is provided for **educational and research purposes only**. -The author is not responsible for any misuse. diff --git a/applications/NFC/miband_nfc/manifest.yml b/applications/NFC/miband_nfc/manifest.yml deleted file mode 100644 index 96d622fa..00000000 --- a/applications/NFC/miband_nfc/manifest.yml +++ /dev/null @@ -1,22 +0,0 @@ -id: miband_nfc -name: "Mi Band NFC" -version: "1.0.0" -category: "NFC" - -short_description: "Read, write and emulate NFC data on Xiaomi Mi Band devices using Flipper Zero." - -description: "@README_flipperlab.md" -changelog: "@CHANGELOG.md" - -author: "Luca Tomei" - -screenshots: - - "screenshots/screenshot_1.png" - - "screenshots/screenshot_2.png" - - "screenshots/screenshot_3.png" - -sourcecode: - type: git - location: - origin: https://github.com/LucaTomei/flipper-miband-nfc-writer.git - commit_sha: 3b8129c32eaba9e851fa6c075ee079a8ba19e19c diff --git a/applications/NFC/mifare_fuzzer/README.md b/applications/NFC/mifare_fuzzer/README.md deleted file mode 100644 index 39d4612b..00000000 --- a/applications/NFC/mifare_fuzzer/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![mifare_fuzzer](https://catalog.flipperzero.one/application/mifare_fuzzer/widget)](https://catalog.flipperzero.one/application/mifare_fuzzer/page) \ No newline at end of file diff --git a/applications/NFC/mifare_fuzzer/manifest.yml b/applications/NFC/mifare_fuzzer/manifest.yml deleted file mode 100644 index c932fee2..00000000 --- a/applications/NFC/mifare_fuzzer/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/mifare_fuzzer -description: "App emulates Mifare Classic cards with various UIDs to check how reader reacts on them" -changelog: "v1.0 - Initial release, v1.1 - Sync Updates, v1.2 - Fixes for new API, v1.3 - Various fixes, v1.4 - Sync updates and latest API support, v1.5 - Sync with latest version" -author: "@spheeere98 & (Fixes for new API by @Sil333033)" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/NFC/networking_nfc_qr_app/manifest.yml b/applications/NFC/networking_nfc_qr_app/manifest.yml deleted file mode 100644 index d99917c8..00000000 --- a/applications/NFC/networking_nfc_qr_app/manifest.yml +++ /dev/null @@ -1,20 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/DonJulve/Networking_NFC_QR_Flipper_Zero.git - commit_sha: "e788ffc0d464d7ae5fc8cf7be0bf2f64802007e0" -short_description: "Emulate NFC and display QR codes simultaneously" -description: | - This application allows emulating an NFC card and displaying a QR code simultaneously on the Flipper Zero screen. - Ideal for networking to share contact info via two methods at once. - - Features: - - NFC Emulation: Loads .nfc files. - - QR Visualization: Displays .qrcode files. - - Dual Interface: QR on screen while NFC emulates. - - See full readme: https://github.com/DonJulve/Networking_NFC_QR_Flipper_Zero/blob/main/README_en.md -changelog: "@.catalog/changelog.md" -screenshots: - - .catalog/screenshots/menu.png - - .catalog/screenshots/app_running.png diff --git a/applications/NFC/nfc_apdu_runner/README.md b/applications/NFC/nfc_apdu_runner/README.md deleted file mode 100644 index 6986cc22..00000000 --- a/applications/NFC/nfc_apdu_runner/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![nfc_apdu_runner](https://catalog.flipperzero.one/application/nfc_apdu_runner/widget)](https://catalog.flipperzero.one/application/nfc_apdu_runner/page) \ No newline at end of file diff --git a/applications/NFC/nfc_apdu_runner/manifest.yml b/applications/NFC/nfc_apdu_runner/manifest.yml deleted file mode 100644 index 8aec557f..00000000 --- a/applications/NFC/nfc_apdu_runner/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: a2004a3539c50ced20f6f24e61ba17c1dd86460b - subdir: apps_source_code/nfc_apdu_runner -description: "@./catalog/docs/Readme.md" -changelog: "@./catalog/docs/Changelog.md" -screenshots: - - "./catalog/screenshots/1.png" - - "./catalog/screenshots/2.png" - - "./catalog/screenshots/3.png" diff --git a/applications/NFC/nfc_eink/README.md b/applications/NFC/nfc_eink/README.md deleted file mode 100644 index b62ba7ee..00000000 --- a/applications/NFC/nfc_eink/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![nfc_eink](https://catalog.flipperzero.one/application/nfc_eink/widget)](https://catalog.flipperzero.one/application/nfc_eink/page) \ No newline at end of file diff --git a/applications/NFC/nfc_eink/manifest.yml b/applications/NFC/nfc_eink/manifest.yml deleted file mode 100644 index 5e728d26..00000000 --- a/applications/NFC/nfc_eink/manifest.yml +++ /dev/null @@ -1,10 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/RebornedBrain/nfc_eink.git - commit_sha: edd3900c30608e9301be85bbe997833e54a1f220 -description: "@README.md" -changelog: "@changelog.md" -screenshots: - - screenshots/1.png - - screenshots/2.png diff --git a/applications/NFC/nfc_login/manifest.yml b/applications/NFC/nfc_login/manifest.yml deleted file mode 100644 index 8fc909cc..00000000 --- a/applications/NFC/nfc_login/manifest.yml +++ /dev/null @@ -1,25 +0,0 @@ -author: 'Play2BReal' -category: 'NFC' -changelog: "@changelog.md" -description: "@README.md" -icon: 'icons/icon.png' -id: 'nfc_login' -name: 'NFC Login' - -screenshots: - - screenshots/ss0.png - - screenshots/ss1.png - - screenshots/ss2.png - - screenshots/ss3.png - - screenshots/ss4.png - - screenshots/ss5.png - -short_description: NFC based desktop login using USB HID or BLE HID - -sourcecode: - location: - commit_sha: c265bafab7a3e402c74cb623a6198228297077cc - origin: https://github.com/Play2BReal/NFC-Login - type: git - -version: 1.1.2 diff --git a/applications/NFC/nfc_magic/README.md b/applications/NFC/nfc_magic/README.md deleted file mode 100644 index 6560c0eb..00000000 --- a/applications/NFC/nfc_magic/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![nfc_magic](https://catalog.flipperzero.one/application/nfc_magic/widget)](https://catalog.flipperzero.one/application/nfc_magic/page) \ No newline at end of file diff --git a/applications/NFC/nfc_magic/manifest.yml b/applications/NFC/nfc_magic/manifest.yml deleted file mode 100644 index 5dda91fe..00000000 --- a/applications/NFC/nfc_magic/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/flipperdevices/flipperzero-good-faps.git - commit_sha: e1311a6da20491b20c32bfc7c00c6b6da5c7a9a7 - subdir: nfc_magic -description: "@.catalog/README.md" -changelog: "@.catalog/changelog.md" -author: "@AloneLiberty" -screenshots: - - ".catalog/screenshots/0.png" - - ".catalog/screenshots/1.png" - - ".catalog/screenshots/2.png" diff --git a/applications/NFC/nfc_maker/README.md b/applications/NFC/nfc_maker/README.md deleted file mode 100644 index 38cebe3d..00000000 --- a/applications/NFC/nfc_maker/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![nfc_maker](https://catalog.flipperzero.one/application/nfc_maker/widget)](https://catalog.flipperzero.one/application/nfc_maker/page) \ No newline at end of file diff --git a/applications/NFC/nfc_maker/manifest.yml b/applications/NFC/nfc_maker/manifest.yml deleted file mode 100644 index 50ab841d..00000000 --- a/applications/NFC/nfc_maker/manifest.yml +++ /dev/null @@ -1,15 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Next-Flip/Momentum-Apps.git - commit_sha: 72f377e8d104181260511079c91a443bff9c4721 - subdir: nfc_maker -description: "@.catalog/README.md" -changelog: "@.catalog/CHANGELOG.md" -screenshots: - - .catalog/1.png - - .catalog/2.png - - .catalog/3.png - - .catalog/4.png - - .catalog/5.png - - .catalog/6.png diff --git a/applications/NFC/nfcurl/README.md b/applications/NFC/nfcurl/README.md deleted file mode 100644 index 1c2393c3..00000000 --- a/applications/NFC/nfcurl/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![nfcurl](https://catalog.flipperzero.one/application/nfcurl/widget)](https://catalog.flipperzero.one/application/nfcurl/page) \ No newline at end of file diff --git a/applications/NFC/nfcurl/manifest.yml b/applications/NFC/nfcurl/manifest.yml deleted file mode 100644 index e81683da..00000000 --- a/applications/NFC/nfcurl/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/y-dejong/nfcurl.git - commit_sha: 1e243e49e6c8f60f7094d52e5ed5914b4323d29a -changelog: "@./docs/changelog.md" -description: "@./docs/description.md" -screenshots: - - screenshots/enter-url.png - - screenshots/emulate.png - - screenshots/options.png diff --git a/applications/NFC/passy/README.md b/applications/NFC/passy/README.md deleted file mode 100644 index f0fb7104..00000000 --- a/applications/NFC/passy/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![passy](https://catalog.flipperzero.one/application/passy/widget)](https://catalog.flipperzero.one/application/passy/page) \ No newline at end of file diff --git a/applications/NFC/passy/manifest.yml b/applications/NFC/passy/manifest.yml deleted file mode 100644 index 91b13e04..00000000 --- a/applications/NFC/passy/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/bettse/passy.git - commit_sha: 021e6d6a50dc352c884a5d2caa84175eb1784fef -description: "@.catalog/README.md" -changelog: "@.catalog/changelog.md" -author: "bettse" -screenshots: - - ".catalog/screenshots/menu.png" - - ".catalog/screenshots/passport_number_input.png" - - ".catalog/screenshots/read_success.png" diff --git a/applications/NFC/picopass/README.md b/applications/NFC/picopass/README.md deleted file mode 100644 index 6166b577..00000000 --- a/applications/NFC/picopass/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![picopass](https://catalog.flipperzero.one/application/picopass/widget)](https://catalog.flipperzero.one/application/picopass/page) diff --git a/applications/NFC/picopass/manifest.yml b/applications/NFC/picopass/manifest.yml deleted file mode 100644 index 2bf14461..00000000 --- a/applications/NFC/picopass/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/bettse/picopass.git - commit_sha: b54ff9a88c0284b3e577039ba6b116d3e38fbd9a -description: "@.catalog/README.md" -changelog: "@.catalog/changelog.md" -author: "@bettse" -screenshots: - - ".catalog/screenshots/menu.png" - - ".catalog/screenshots/pacs.png" - - ".catalog/screenshots/saved menu.png" diff --git a/applications/NFC/seader/README.md b/applications/NFC/seader/README.md deleted file mode 100644 index d30e41f5..00000000 --- a/applications/NFC/seader/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![seader](https://catalog.flipperzero.one/application/seader/widget)](https://catalog.flipperzero.one/application/seader/page) \ No newline at end of file diff --git a/applications/NFC/seader/manifest.yml b/applications/NFC/seader/manifest.yml deleted file mode 100644 index 83d56c12..00000000 --- a/applications/NFC/seader/manifest.yml +++ /dev/null @@ -1,15 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/bettse/seader.git - commit_sha: 57064e15066b5f4f7a70c9aa42396ee97ecb585d -short_description: "Allows for reading credential from HID iClass, iClass SE, Desfire EV1/EV2, and Seos" -description: | - Allows for reading credential from HID iClass, iClass SE, MFC SE, Desfire EV1/EV2, and Seos. Credentials can be saved in an agnostic format, or as various Flipper formats (Prox, MFC, iClass, iClass SR), depending on the original type. - Requires addon: UART to mini-SIM adapter and HID SAM. - See full readme for wiring and more information: https://github.com/bettse/seader/blob/main/readme.md -changelog: "@.catalog/changelog.md" -screenshots: - - .catalog/screenshots/menu.png - - .catalog/screenshots/pacs.png - - .catalog/screenshots/save_menu.png diff --git a/applications/NFC/seos/README.md b/applications/NFC/seos/README.md deleted file mode 100644 index 8c63f59e..00000000 --- a/applications/NFC/seos/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![seos](https://catalog.flipperzero.one/application/seos/widget)](https://catalog.flipperzero.one/application/seos/page) \ No newline at end of file diff --git a/applications/NFC/seos/manifest.yml b/applications/NFC/seos/manifest.yml deleted file mode 100644 index 076ad975..00000000 --- a/applications/NFC/seos/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/bettse/seos_compatible.git - commit_sha: 3b31ff37bc68a1ce2a622ab2c6e2de65ee4bc9a0 -description: "@.catalog/README.md" -changelog: "@CHANGELOG.md" -author: "bettse" -screenshots: - - ".catalog/screenshots/menu.png" - - ".catalog/screenshots/read_success.png" diff --git a/applications/NFC/udecard/manifest.yml b/applications/NFC/udecard/manifest.yml deleted file mode 100644 index 9a796523..00000000 --- a/applications/NFC/udecard/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/hahnworks/UDECard.git - commit_sha: 53bf53fd4b66d003da2e56a95de09893683ebbe3 -short_description: Analyse student ID cards from the University of Duisburg-Essen (Intercard). -description: "@.catalog/README.md" -changelog: "@.catalog/CHANGELOG.md" -screenshots: - - .catalog/screenshots/detect_scene.png - - .catalog/screenshots/result_scene.png - - .catalog/screenshots/main_menu.png -version: 1.0.3 diff --git a/applications/NFC/vb_migrate/README.md b/applications/NFC/vb_migrate/README.md deleted file mode 100644 index a515b474..00000000 --- a/applications/NFC/vb_migrate/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![vb_migrate](https://catalog.flipperzero.one/application/vb_migrate/widget)](https://catalog.flipperzero.one/application/vb_migrate/page) \ No newline at end of file diff --git a/applications/NFC/vb_migrate/manifest.yml b/applications/NFC/vb_migrate/manifest.yml deleted file mode 100644 index d4ea743d..00000000 --- a/applications/NFC/vb_migrate/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/GMMan/flipperzero-vb-migrate.git - commit_sha: 1e5f5865b4ddb3f927234285bd5a21e609cc666f -description: "@README_catalog.md" -changelog: "@CHANGES.md" -screenshots: - - .flipcorg/gallery/1.png - - .flipcorg/gallery/2.png - - .flipcorg/gallery/3.png - - .flipcorg/gallery/4.png - - .flipcorg/gallery/5.png - - .flipcorg/gallery/6.png diff --git a/applications/NFC/vk_thermo/manifest.yml b/applications/NFC/vk_thermo/manifest.yml deleted file mode 100644 index 2e504f89..00000000 --- a/applications/NFC/vk_thermo/manifest.yml +++ /dev/null @@ -1,22 +0,0 @@ -short_description: "Read temperature from your VivoKey Thermo via NFC. Supports multi-Thermo tracking, history, and graph views." - -description: "@README_CATALOG.md" - -changelog: "@CHANGELOG_CATALOG.md" - -author: "VivoKey Technologies" - -sourcecode: - type: git - location: - origin: https://github.com/VivoKey/vkthermo-flipper.git - commit_sha: ded6be8dcfb6048f06bbfa33c4e6e963786c5f95 - -icon: "icons/vk_thermo_10px.png" - -screenshots: - - './screenshots/vkthermo-flipper-main.png' - - './screenshots/vkthermo-flipper-result-c.png' - - './screenshots/vkthermo-flipper-log.png' - - './screenshots/vkthermo-flipper-graph.png' - - './screenshots/vkthermo-flipper-settings.png' diff --git a/applications/NFC/weebo/manifest.yml b/applications/NFC/weebo/manifest.yml deleted file mode 100644 index 5bbc3bca..00000000 --- a/applications/NFC/weebo/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/bettse/weebo.git - commit_sha: ccfa358540954e3c2d4826fde7e6de6ab0705cd8 -description: "@.catalog/README.md" -changelog: "@.catalog/changelog.md" -author: "bettse" -screenshots: - - ".catalog/screenshots/menu.png" - - ".catalog/screenshots/emulate.png" - - ".catalog/screenshots/info.png" diff --git a/applications/RFID/.gitkeep b/applications/RFID/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/applications/RFID/fdxb_maker/manifest.yml b/applications/RFID/fdxb_maker/manifest.yml deleted file mode 100644 index b87779a1..00000000 --- a/applications/RFID/fdxb_maker/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/snowsign/fdxb-maker.git - commit_sha: 506a5d58c2c2ba6d13a11608e520d8ddb57f6540 -description: "@README.md" -changelog: "@changelog.md" -screenshots: - - screenshots/country.png - - screenshots/national.png - - screenshots/extra_info.png - - screenshots/warning.png \ No newline at end of file diff --git a/applications/RFID/fuzzer_rfid/README.md b/applications/RFID/fuzzer_rfid/README.md deleted file mode 100644 index 6c2371a6..00000000 --- a/applications/RFID/fuzzer_rfid/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![fuzzer_rfid](https://catalog.flipperzero.one/application/fuzzer_rfid/widget)](https://catalog.flipperzero.one/application/fuzzer_rfid/page) \ No newline at end of file diff --git a/applications/RFID/fuzzer_rfid/manifest.yml b/applications/RFID/fuzzer_rfid/manifest.yml deleted file mode 100644 index e3bd8af4..00000000 --- a/applications/RFID/fuzzer_rfid/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/DarkFlippers/Multi_Fuzzer.git - commit_sha: 2ecfcd857da54b7a08014d14d7b46eb235b72695 -id: "fuzzer_rfid" -description: "@./catalog/docs/rfid/README.md" -changelog: "@./catalog/docs/rfid/Changelog.md" -screenshots: - - "./catalog/screenshots/Main_menu.png" - - "./catalog/screenshots/Attack_screen.png" - - "./catalog/screenshots/Pause.png" - - "./catalog/screenshots/Field_editor.png" \ No newline at end of file diff --git a/applications/RFID/key_generator/README.md b/applications/RFID/key_generator/README.md deleted file mode 100644 index 0c4e47a9..00000000 --- a/applications/RFID/key_generator/README.md +++ /dev/null @@ -1,5 +0,0 @@ -A program that generates universal keys from a EM4100 key - -## Status - -[![key_generator](https://catalog.flipperzero.one/application/key_generator/widget)](https://catalog.flipperzero.one/application/key_generator/page) diff --git a/applications/RFID/key_generator/manifest.yml b/applications/RFID/key_generator/manifest.yml deleted file mode 100644 index 5b9e9f9b..00000000 --- a/applications/RFID/key_generator/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Milk-Cool/fz-em4100-generator.git - commit_sha: d8b67d779fa834cc28ca2f0d0ca7607ff8a96f65 -short_description: "RFID potential universal keys generator" -description: "@README.md" -changelog: "v1.1 - Increased version so that it shows up in the catalog; v1.0 - initial release" -author: "milk_cool" -screenshots: - - "./.flipcorg/gallery/Screenshot-20230223-203332.png" diff --git a/applications/RFID/t5577_multiwriter/README.md b/applications/RFID/t5577_multiwriter/README.md deleted file mode 100644 index 64ef9543..00000000 --- a/applications/RFID/t5577_multiwriter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![t5577_multiwriter](https://catalog.flipperzero.one/application/t5577_multiwriter/widget)](https://catalog.flipperzero.one/application/t5577_multiwriter/page) \ No newline at end of file diff --git a/applications/RFID/t5577_multiwriter/manifest.yml b/applications/RFID/t5577_multiwriter/manifest.yml deleted file mode 100644 index eb5908ce..00000000 --- a/applications/RFID/t5577_multiwriter/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: a2004a3539c50ced20f6f24e61ba17c1dd86460b - subdir: apps_source_code/t5577_multiwriter -description: "@./catalog/docs/Readme.md" -changelog: "@./catalog/docs/Changelog.md" -screenshots: - - "./catalog/screenshots/1.png" - diff --git a/applications/RFID/t5577_writer/README.md b/applications/RFID/t5577_writer/README.md deleted file mode 100644 index ae6d6f4a..00000000 --- a/applications/RFID/t5577_writer/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![t5577_writer](https://catalog.flipperzero.one/application/t5577_writer/widget)](https://catalog.flipperzero.one/application/t5577_writer/page) \ No newline at end of file diff --git a/applications/RFID/t5577_writer/manifest.yml b/applications/RFID/t5577_writer/manifest.yml deleted file mode 100644 index 1cc6ae1f..00000000 --- a/applications/RFID/t5577_writer/manifest.yml +++ /dev/null @@ -1,15 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/zinongli/T5577_Raw_Writer.git - commit_sha: 96fd8e8f3495bfbe2ce7cd65760d1e5eeba80115 -description: "@README.md" -changelog: "@CHANGELOG.md" -author: "Torron" -screenshots: - - "screenshots/main_menu.png" - - "screenshots/config_1.png" - - "screenshots/config_2.png" - - "screenshots/writing.png" - - "screenshots/load.png" - - "screenshots/about.png" \ No newline at end of file diff --git a/applications/Sub-GHz/.gitkeep b/applications/Sub-GHz/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/applications/Sub-GHz/esubghz_chat/README.md b/applications/Sub-GHz/esubghz_chat/README.md deleted file mode 100644 index b194326e..00000000 --- a/applications/Sub-GHz/esubghz_chat/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![esubghz_chat](https://catalog.flipperzero.one/application/esubghz_chat/widget)](https://catalog.flipperzero.one/application/esubghz_chat/page) \ No newline at end of file diff --git a/applications/Sub-GHz/esubghz_chat/manifest.yml b/applications/Sub-GHz/esubghz_chat/manifest.yml deleted file mode 100644 index bff352de..00000000 --- a/applications/Sub-GHz/esubghz_chat/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/esubghz_chat -description: "@README.md" -changelog: "v1.1 - Release, v1.2 - Fixes and imporvements" -author: "@twisted-pear & @xMasterX & more in ReadMe" -screenshots: - - "./screenshots/1.png" - - "./screenshots/2.png" - - "./screenshots/3.png" - - "./screenshots/4.png" diff --git a/applications/Sub-GHz/flipper_share/manifest.yml b/applications/Sub-GHz/flipper_share/manifest.yml deleted file mode 100644 index e6819e54..00000000 --- a/applications/Sub-GHz/flipper_share/manifest.yml +++ /dev/null @@ -1,22 +0,0 @@ -# PR this file to: https://github.com/flipperdevices/flipper-application-catalog/ -# applications/Sub-GHz/flipper_share/manifest.yml - -# Check: python3 tools/bundle.py --nolint applications/Sub-GHz/flipper_share/manifest.yml bundle.zip - -sourcecode: - type: git - location: - origin: https://github.com/lomalkin/flipper-zero-apps.git - commit_sha: ec79fc5b6ea2f9e655c69eec587460cbc3e7bcda - subdir: flipper_share -description: "@README_catalog.md" -changelog: "@CHANGELOG.md" -screenshots: - - screenshots/1.png - - screenshots/2.png - - screenshots/3.png - - screenshots/4.png - - screenshots/5.png - - screenshots/6.png - - screenshots/7.png - diff --git a/applications/Sub-GHz/fmf_to_sub/README.md b/applications/Sub-GHz/fmf_to_sub/README.md deleted file mode 100644 index 9dcd5006..00000000 --- a/applications/Sub-GHz/fmf_to_sub/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![fmf_to_sub](https://catalog.flipperzero.one/application/fmf_to_sub/widget)](https://catalog.flipperzero.one/application/fmf_to_sub/page) \ No newline at end of file diff --git a/applications/Sub-GHz/fmf_to_sub/manifest.yml b/applications/Sub-GHz/fmf_to_sub/manifest.yml deleted file mode 100644 index adab4073..00000000 --- a/applications/Sub-GHz/fmf_to_sub/manifest.yml +++ /dev/null @@ -1,16 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jamisonderek/flipper-zero-tutorials.git - commit_sha: 09ed9f6bd69bdae141469ab150bc2df698843d14 - subdir: subghz/fmf_to_sub -description: "@./gallery/README.md" -changelog: "@./gallery/CHANGELOG.md" -author: "CodeAllNight (MrDerekJamison)" -screenshots: - - "gallery/00-main-menu.png" - - "gallery/01-about1.png" - - "gallery/02-about2.png" - - "gallery/03-configure.png" - - "gallery/04-convert.png" - - "gallery/05-file.png" \ No newline at end of file diff --git a/applications/Sub-GHz/genie_record/README.md b/applications/Sub-GHz/genie_record/README.md deleted file mode 100644 index a3c805fb..00000000 --- a/applications/Sub-GHz/genie_record/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![genie_record](https://catalog.flipperzero.one/application/genie_record/widget)](https://catalog.flipperzero.one/application/genie_record/page) \ No newline at end of file diff --git a/applications/Sub-GHz/genie_record/manifest.yml b/applications/Sub-GHz/genie_record/manifest.yml deleted file mode 100644 index a2435473..00000000 --- a/applications/Sub-GHz/genie_record/manifest.yml +++ /dev/null @@ -1,19 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jamisonderek/flipper-zero-tutorials.git - commit_sha: bd21796c034ed76738fa71bacb83cb099ad6f559 - subdir: subghz/apps/genie-recorder -description: "@./.flipcorg/gallery/README.md" -changelog: "@./.flipcorg/gallery/CHANGELOG.md" -author: "CodeAllNight (MrDerekJamison)" -screenshots: - - ".flipcorg/gallery/01-about.png" - - ".flipcorg/gallery/02-learn-done.png" - - ".flipcorg/gallery/03-send-some-codes.png" - - ".flipcorg/gallery/04-main-menu.png" - - ".flipcorg/gallery/05-config.png" - - ".flipcorg/gallery/06-config-genie-file.png" - - ".flipcorg/gallery/07-learn-codes.png" - - ".flipcorg/gallery/08-send-new.png" - - ".flipcorg/gallery/09-send-complete.png" diff --git a/applications/Sub-GHz/hc11_modem/README.md b/applications/Sub-GHz/hc11_modem/README.md deleted file mode 100644 index dbf708e2..00000000 --- a/applications/Sub-GHz/hc11_modem/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![hc11_modem](https://catalog.flipperzero.one/application/hc11_modem/widget)](https://catalog.flipperzero.one/application/hc11_modem/page) \ No newline at end of file diff --git a/applications/Sub-GHz/hc11_modem/manifest.yml b/applications/Sub-GHz/hc11_modem/manifest.yml deleted file mode 100644 index f00acaa1..00000000 --- a/applications/Sub-GHz/hc11_modem/manifest.yml +++ /dev/null @@ -1,16 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Giraut/flipper_zero_hc11_wireless_modem - commit_sha: 043c1454c69c101162789576cd689a1325f3f970 -short_description: HC-11 wireless modem -description: "HC-11 wireless modem emulator for the Flipper Zero" -changelog: "@Changelog.md" -screenshots: - - screenshots/1-splash_version.png - - screenshots/2-usb_serial_passthrough1.png - - screenshots/3-usb_serial_passthrough2.png - - screenshots/4-app_description.png - - screenshots/5-configuration_menu.png - - screenshots/6-main_menu.png - - screenshots/7-warning.png diff --git a/applications/Sub-GHz/pocsag_pager/README.md b/applications/Sub-GHz/pocsag_pager/README.md deleted file mode 100644 index 6df78f3d..00000000 --- a/applications/Sub-GHz/pocsag_pager/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![pocsag_pager](https://catalog.flipperzero.one/application/pocsag_pager/widget)](https://catalog.flipperzero.one/application/pocsag_pager/page) \ No newline at end of file diff --git a/applications/Sub-GHz/pocsag_pager/manifest.yml b/applications/Sub-GHz/pocsag_pager/manifest.yml deleted file mode 100644 index a7f690af..00000000 --- a/applications/Sub-GHz/pocsag_pager/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: base_pack/pocsag_pager -description: "@README.md" -changelog: "v1.0 - Initial release, v1.1 - Sync Updates, v1.2 - Fixes for new API and improved decoder, v1.3 - Sync updates and latest API support, v1.4 - Sync with latest version" -author: "@xMasterX & @Shmuma & (Improved decoder by @htotoo)" -screenshots: - - "./img/1.png" - - "./img/2.png" - - "./img/3.png" diff --git a/applications/Sub-GHz/protoview/README.md b/applications/Sub-GHz/protoview/README.md deleted file mode 100644 index 6d95b2fb..00000000 --- a/applications/Sub-GHz/protoview/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![protoview](https://catalog.flipperzero.one/application/protoview/widget)](https://catalog.flipperzero.one/application/protoview/page) \ No newline at end of file diff --git a/applications/Sub-GHz/protoview/manifest.yml b/applications/Sub-GHz/protoview/manifest.yml deleted file mode 100644 index b70a74e2..00000000 --- a/applications/Sub-GHz/protoview/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: base_pack/protoview -description: "@README.md" -changelog: "v1.0 - Initial release, v1.1 - Sync Updates, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "@antirez & (fixes by @xMasterX)" -screenshots: - - "./img/1.png" - - "./img/2.png" - - "./img/3.png" diff --git a/applications/Sub-GHz/radio_scanner/README.md b/applications/Sub-GHz/radio_scanner/README.md deleted file mode 100644 index 1691b798..00000000 --- a/applications/Sub-GHz/radio_scanner/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![radio_scanner](https://catalog.flipperzero.one/application/radio_scanner/widget)](https://catalog.flipperzero.one/application/radio_scanner/page) \ No newline at end of file diff --git a/applications/Sub-GHz/radio_scanner/manifest.yml b/applications/Sub-GHz/radio_scanner/manifest.yml deleted file mode 100644 index 9911cf51..00000000 --- a/applications/Sub-GHz/radio_scanner/manifest.yml +++ /dev/null @@ -1,17 +0,0 @@ -author: '@RocketGod-git' -category: 'Sub-GHz' -changelog: '@./docs/CHANGELOG.md' -description: '@./docs/README.md' -icon: 'icons/radio_scanner.png' -id: 'radio_scanner' -name: 'Radio Scanner' -screenshots: - - 'screenshots/Screenshot1.png' -short_description: 'Sub-GHz Radio Scanner with audio output to internal speaker' -sourcecode: - location: - commit_sha: 238513c477789caf43e361424fbf1b8768986637 - origin: https://github.com/RocketGod-git/Flipper-Zero-Radio-Scanner.git - subdir: - type: git -version: 0.2 diff --git a/applications/Sub-GHz/spectrum_analyzer/README.md b/applications/Sub-GHz/spectrum_analyzer/README.md deleted file mode 100644 index 6a143c7c..00000000 --- a/applications/Sub-GHz/spectrum_analyzer/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![spectrum_analyzer](https://catalog.flipperzero.one/application/spectrum_analyzer/widget)](https://catalog.flipperzero.one/application/spectrum_analyzer/page) \ No newline at end of file diff --git a/applications/Sub-GHz/spectrum_analyzer/manifest.yml b/applications/Sub-GHz/spectrum_analyzer/manifest.yml deleted file mode 100644 index c539e405..00000000 --- a/applications/Sub-GHz/spectrum_analyzer/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: base_pack/spectrum_analyzer -description: "@README.md" -changelog: "v1.0 - Initial release, v1.1 - Fixes, v1.2 - Sync Updates, v1.3 - Sync updates and latest API support, v1.4 - Sync with latest version" -author: "@xMasterX & @theY4Kman & @ALEEF02 (original by @jolcese)" -screenshots: - - "./img/1.png" - - "./img/2.png" - - "./img/3.png" diff --git a/applications/Sub-GHz/sub_analyzer/README.md b/applications/Sub-GHz/sub_analyzer/README.md deleted file mode 100644 index 3208e925..00000000 --- a/applications/Sub-GHz/sub_analyzer/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![sub_analyzer](https://catalog.flipperzero.one/application/sub_analyzer/widget)](https://catalog.flipperzero.one/application/sub_analyzer/page) \ No newline at end of file diff --git a/applications/Sub-GHz/sub_analyzer/manifest.yml b/applications/Sub-GHz/sub_analyzer/manifest.yml deleted file mode 100644 index 2aa1f279..00000000 --- a/applications/Sub-GHz/sub_analyzer/manifest.yml +++ /dev/null @@ -1,16 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: a2004a3539c50ced20f6f24e61ba17c1dd86460b - subdir: apps_source_code/sub_analyzer -description: "@./catalog/docs/Readme.md" -changelog: "@./catalog/docs/Changelog.md" -screenshots: - - "./catalog/screenshots/1.png" - - "./catalog/screenshots/2.png" - - "./catalog/screenshots/3.png" - - "./catalog/screenshots/4.png" - - "./catalog/screenshots/5.png" - - "./catalog/screenshots/6.png" - diff --git a/applications/Sub-GHz/subghz_remote_ofw/README.md b/applications/Sub-GHz/subghz_remote_ofw/README.md deleted file mode 100644 index 6a529898..00000000 --- a/applications/Sub-GHz/subghz_remote_ofw/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![subghz_remote_ofw](https://catalog.flipperzero.one/application/subghz_remote_ofw/widget)](https://catalog.flipperzero.one/application/subghz_remote_ofw/page) \ No newline at end of file diff --git a/applications/Sub-GHz/subghz_remote_ofw/manifest.yml b/applications/Sub-GHz/subghz_remote_ofw/manifest.yml deleted file mode 100644 index 36bc02ef..00000000 --- a/applications/Sub-GHz/subghz_remote_ofw/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/DarkFlippers/SubGHz_Remote.git - commit_sha: 841f36b269a467a27b26d55223e1d80520e279a0 -id: "subghz_remote_ofw" -description: "@./catalog/docs/Readme.md" -changelog: "@./catalog/docs/Changelog.md" -screenshots: - - "./catalog/screenshots/Remote_idle.png" - - "./catalog/screenshots/Remote_send.png" - - "./catalog/screenshots/Editor_main.png" - - "./catalog/screenshots/Editor_submenu.png" \ No newline at end of file diff --git a/applications/Sub-GHz/subghz_scheduler/README.md b/applications/Sub-GHz/subghz_scheduler/README.md deleted file mode 100644 index ce9c7752..00000000 --- a/applications/Sub-GHz/subghz_scheduler/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![subghz_scheduler](https://catalog.flipperzero.one/application/subghz_scheduler/widget)](https://catalog.flipperzero.one/application/subghz_scheduler/page) \ No newline at end of file diff --git a/applications/Sub-GHz/subghz_scheduler/manifest.yml b/applications/Sub-GHz/subghz_scheduler/manifest.yml deleted file mode 100644 index 9ff062ef..00000000 --- a/applications/Sub-GHz/subghz_scheduler/manifest.yml +++ /dev/null @@ -1,20 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/shalebridge/flipper-subghz-scheduler.git - commit_sha: 3c760f122036780e80e342486afbaeec17186747 -name: "Sub-GHz Scheduler" -id: "subghz_scheduler" -version: "2.3" -description: "Individual *.sub or playlist *.txt files can be used for Sub-GHz interval transmission. Discrete intervals from 1 seconds to 24 hours are selectable, as well as repeating transmissions for individual data. See repo for description of settings and modes." -short_description: "Send a Sub-GHz signal repeatedly at a given interval." -changelog: "@CHANGELOG.md" -author: "Patrick Edwards" -targets: ['all'] -category: "Sub-GHz" -icon: "icons/icon.png" -screenshots: - - "./screenshots/v2.3/rundisplay.png" - - "./screenshots/v2.3/intervals.png" - - "./screenshots/v2.3/radio.png" - - "./screenshots/v2.3/txmode.png" diff --git a/applications/Sub-GHz/tpms/README.md b/applications/Sub-GHz/tpms/README.md deleted file mode 100644 index a886f3e8..00000000 --- a/applications/Sub-GHz/tpms/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![tpms](https://catalog.flipperzero.one/application/tpms/widget)](https://catalog.flipperzero.one/application/tpms/page) \ No newline at end of file diff --git a/applications/Sub-GHz/tpms/manifest.yml b/applications/Sub-GHz/tpms/manifest.yml deleted file mode 100644 index f02fdb78..00000000 --- a/applications/Sub-GHz/tpms/manifest.yml +++ /dev/null @@ -1,15 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: a2004a3539c50ced20f6f24e61ba17c1dd86460b - subdir: apps_source_code/tpms_receiver -description: "@./catalog/docs/Readme.md" -changelog: "@./catalog/docs/Changelog.md" -screenshots: - - "./catalog/screenshots/1.png" - - "./catalog/screenshots/2.png" - - "./catalog/screenshots/3.png" - - "./catalog/screenshots/4.png" - - "./catalog/screenshots/5.png" - diff --git a/applications/Sub-GHz/weather_station/README.md b/applications/Sub-GHz/weather_station/README.md deleted file mode 100644 index 730ad193..00000000 --- a/applications/Sub-GHz/weather_station/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![weather_station](https://catalog.flipperzero.one/application/weather_station/widget)](https://catalog.flipperzero.one/application/weather_station/page) \ No newline at end of file diff --git a/applications/Sub-GHz/weather_station/manifest.yml b/applications/Sub-GHz/weather_station/manifest.yml deleted file mode 100644 index 48a79a2a..00000000 --- a/applications/Sub-GHz/weather_station/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/flipperdevices/flipperzero-good-faps.git - commit_sha: e1311a6da20491b20c32bfc7c00c6b6da5c7a9a7 - subdir: weather_station -description: "@.catalog/README.md" -changelog: "@.catalog/changelog.md" -author: "@Skorpionm" -screenshots: - - ".catalog/screenshots/1.png" - - ".catalog/screenshots/2.png" - - ".catalog/screenshots/3.png" diff --git a/applications/Tools/.gitkeep b/applications/Tools/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/applications/Tools/analog_clock/README.md b/applications/Tools/analog_clock/README.md deleted file mode 100644 index bd2d7db9..00000000 --- a/applications/Tools/analog_clock/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![analog_clock](https://catalog.flipperzero.one/application/analog_clock/widget)](https://catalog.flipperzero.one/application/analog_clock/page) \ No newline at end of file diff --git a/applications/Tools/analog_clock/manifest.yml b/applications/Tools/analog_clock/manifest.yml deleted file mode 100644 index a80fb948..00000000 --- a/applications/Tools/analog_clock/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/flipper_analog_clock -description: "Shows analog clock on Flipper screen" -changelog: "v1.0 - Initial release, v1.1 - Sync Updates, v1.2 - Fixes for latest API, v1.3 - Sync updates and latest API support, v1.4 - Sync with latest version" -author: "@scrolltex" -screenshots: - - "./img/1.png" diff --git a/applications/Tools/animation_switcher/README.md b/applications/Tools/animation_switcher/README.md deleted file mode 100644 index 9bbb2214..00000000 --- a/applications/Tools/animation_switcher/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# What does this app do? - -The background animations for the Flipper are controlled by a single manifest.txt file. However, it does not provide the user with the ability to truly switch between different animations (or presets of animations) at will. This app aims to solve that, allowing you to create and apply new manifest.txt files on the fly! Just select the animations you want, configure their butthurt, level and weight parameters, name the playlist and apply it. - -# How do I use it? - -The app is pretty intuitive, arrow buttons are used to navigate the menus, OK button is used to select options, back button is used to return. For additional help, please check the README file in the [official Animation Switcher repository](https://github.com/lsalik2/FlipperAnimationSwitcher) - -# What's next? - -- Manual manifest.txt import as a playlist -- Automatic backup of the previous manifest.txt before applying a new playlist -- Animation previewer screen -- Increase maximum animation count beyond 128 \ No newline at end of file diff --git a/applications/Tools/animation_switcher/manifest.yml b/applications/Tools/animation_switcher/manifest.yml deleted file mode 100644 index b1715ebd..00000000 --- a/applications/Tools/animation_switcher/manifest.yml +++ /dev/null @@ -1,16 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/lsalik2/FlipperAnimationSwitcher.git - commit_sha: dcc225ccbac031c91659dd2f0175f27a3816ac85 -short_description: Change your background animations on the fly! -description: "@README.md" -changelog: "@CHANGELOG.md" -screenshots: - - screenshots/1_menu.png - - screenshots/2_playlist_create.png - - screenshots/3_playlist_name.png - - screenshots/4_playlist_preview.png - - screenshots/5_playlist_apply.png - - screenshots/6_settings.png - - screenshots/7_about.png \ No newline at end of file diff --git a/applications/Tools/barcode_app/README.md b/applications/Tools/barcode_app/README.md deleted file mode 100644 index 946af787..00000000 --- a/applications/Tools/barcode_app/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![barcode_app](https://catalog.flipperzero.one/application/barcode_app/widget)](https://catalog.flipperzero.one/application/barcode_app/page) \ No newline at end of file diff --git a/applications/Tools/barcode_app/manifest.yml b/applications/Tools/barcode_app/manifest.yml deleted file mode 100644 index 0c24ab10..00000000 --- a/applications/Tools/barcode_app/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: base_pack/barcode_gen -description: "App allows you to display various barcodes on flipper screen" -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Various fixes, v1.3 - Sync updates and latest API support, v1.4 - Sync with latest version" -author: "@Kingal1337" -screenshots: - - "./img/2.png" - - "./img/3.png" - - "./img/1.png" diff --git a/applications/Tools/blinker/README.md b/applications/Tools/blinker/README.md deleted file mode 100644 index fe5d5a42..00000000 --- a/applications/Tools/blinker/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# Blinker - -A Flipper Zero application that blinks LEDs with a decreasing frequency over time. Unlike traditional Pomodoro timers, it provides visual feedback through LED blinks that gradually slow down. - -# Application Features - -## Main screen -* **Menu:** available options - * **Int.** - configuration of max and min intervals using the number picker screen - * **Dur.** - configuration of duration of execution using the number picker screen - * **Flash** - start blinking the LED light and move to execution screen - -## Number picker screen -* **Header:** name of selected mode selected mode and unit. - * Available modes are max interval, min interval and duration. - * Units: Beats per minute or BPM for intervals, minutes for duration. -* **Number picker:** keyboard with buffer to choose a number in correct constrains. 1 - 200 for intervals and 1-60 for duration. - -## Execution screen -* **Text:** showing current tempo of blinking in beats per minute. \ No newline at end of file diff --git a/applications/Tools/blinker/manifest.yml b/applications/Tools/blinker/manifest.yml deleted file mode 100644 index 49e154c1..00000000 --- a/applications/Tools/blinker/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Cupprum/Blinker.git - commit_sha: c88d25be55ee83ffe5309312d0d73dcd90f3ffe6 -short_description: "App that blinks LEDs with a decreasing frequency over time" -description: "@catalog/README.md" -changelog: "@catalog/changelog.md" -author: "@Cupprum" -screenshots: - - "screenshots/blinker_blinking.png" - - "screenshots/blinker_menu.png" - - "screenshots/blinker_number_menu.png" \ No newline at end of file diff --git a/applications/Tools/brainfuck/README.md b/applications/Tools/brainfuck/README.md deleted file mode 100644 index 14f329d2..00000000 --- a/applications/Tools/brainfuck/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![brainfuck](https://catalog.flipperzero.one/application/brainfuck/widget)](https://catalog.flipperzero.one/application/brainfuck/page) \ No newline at end of file diff --git a/applications/Tools/brainfuck/manifest.yml b/applications/Tools/brainfuck/manifest.yml deleted file mode 100644 index 3f91d7c1..00000000 --- a/applications/Tools/brainfuck/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/brainfuck -description: "Brainfuck language interpreter" -changelog: "v1.0 - Initial release, v1.1 - Sync Updates, v1.2 - Fixes for new API, v1.3 - Sync updates and latest API support, v1.4 - Sync with latest version" -author: "@nymda" -screenshots: - - "./img/2.png" - - "./img/3.png" - - "./img/1.png" diff --git a/applications/Tools/caesar_cipher/README.md b/applications/Tools/caesar_cipher/README.md deleted file mode 100644 index ed8e9f3f..00000000 --- a/applications/Tools/caesar_cipher/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![caesar_cipher](https://catalog.flipperzero.one/application/caesar_cipher/widget)](https://catalog.flipperzero.one/application/caesar_cipher/page) \ No newline at end of file diff --git a/applications/Tools/caesar_cipher/manifest.yml b/applications/Tools/caesar_cipher/manifest.yml deleted file mode 100644 index e92c9f98..00000000 --- a/applications/Tools/caesar_cipher/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/caesarcipher -description: "Encrypt and decrypt text using Caesar Cipher" -changelog: "v1.0 - Initial release, v1.1 - Sync Updates, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "@panki27" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/Tools/calculator/README.md b/applications/Tools/calculator/README.md deleted file mode 100644 index 966e4fe4..00000000 --- a/applications/Tools/calculator/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![calculator](https://catalog.flipperzero.one/application/calculator/widget)](https://catalog.flipperzero.one/application/calculator/page) \ No newline at end of file diff --git a/applications/Tools/calculator/manifest.yml b/applications/Tools/calculator/manifest.yml deleted file mode 100644 index ea45c305..00000000 --- a/applications/Tools/calculator/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/calculator -description: "Calculator, that can calculate simple expressions" -changelog: "v1.0 - Initial release, v1.1 - Sync Updates, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "@n-o-T-I-n-s-a-n-e" -screenshots: - - "./img/1.png" diff --git a/applications/Tools/can_tools/manifest.yml b/applications/Tools/can_tools/manifest.yml deleted file mode 100644 index b91ff94b..00000000 --- a/applications/Tools/can_tools/manifest.yml +++ /dev/null @@ -1,15 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/MatthewKuKanich/FlipperCANTools.git - commit_sha: 8fa1fcf043c308921be4818f7e4e80bfe062a438 - subdir: can_tools -description: "./README.md" -changelog: "./changelog.md" -author: "@MatthewKuKanich" -screenshots: - - "./screenshots/1.png" - - "./screenshots/2.png" - - "./screenshots/3.png" - - "./screenshots/4.png" - diff --git a/applications/Tools/clock/README.md b/applications/Tools/clock/README.md deleted file mode 100644 index 5a22f699..00000000 --- a/applications/Tools/clock/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![clock](https://catalog.flipperzero.one/application/clock/widget)](https://catalog.flipperzero.one/application/clock/page) \ No newline at end of file diff --git a/applications/Tools/clock/manifest.yml b/applications/Tools/clock/manifest.yml deleted file mode 100644 index b3049ceb..00000000 --- a/applications/Tools/clock/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/flipperdevices/flipperzero-good-faps.git - commit_sha: ace22647f5f466804340821debdc19b723535487 - subdir: clock -description: "@.catalog/README.md" -changelog: "@.catalog/changelog.md" -author: "@kowalski7cc" -screenshots: - - ".catalog/screenshots/1.png" diff --git a/applications/Tools/cntdown_tim/README.md b/applications/Tools/cntdown_tim/README.md deleted file mode 100644 index c9788ae2..00000000 --- a/applications/Tools/cntdown_tim/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![cntdown_tim](https://catalog.flipperzero.one/application/cntdown_tim/widget)](https://catalog.flipperzero.one/application/cntdown_tim/page) \ No newline at end of file diff --git a/applications/Tools/cntdown_tim/manifest.yml b/applications/Tools/cntdown_tim/manifest.yml deleted file mode 100644 index 4786f170..00000000 --- a/applications/Tools/cntdown_tim/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/fpz_cntdown_timer-main -description: "Simple count down timer" -changelog: "v1.0 - Initial release, v1.1 - Fixed exit issues, v1.2 - Sync Updates, v1.3 - Various fixes, v1.4 - Sync updates and latest API support, v1.5 - Sync with latest version" -author: "@0w0mewo" -screenshots: - - "./img/1.png" diff --git a/applications/Tools/combo_cracker/manifest.yml b/applications/Tools/combo_cracker/manifest.yml deleted file mode 100644 index 275b0e26..00000000 --- a/applications/Tools/combo_cracker/manifest.yml +++ /dev/null @@ -1,21 +0,0 @@ -author: '@CharlesTheGreat77' -category: 'Tools' -description: '@./docs/README.md' -changelog: '@./docs/CHANGELOG.md' -icon: 'icons/app10x10.png' -id: 'combo_cracker' -name: 'Combo Cracker' -screenshots: - - 'screenshots/screenshot1.png' - - 'screenshots/screenshot2.png' - - 'screenshots/screenshot3.png' - - 'screenshots/screenshot4.png' - - 'screenshots/screenshot5.png' -short_description: 'Crack combo locks in 8 attempts or less' -sourcecode: - location: - commit_sha: a1325a583d5e34320f567e87100f87dd4a0e5c6a - origin: https://github.com/CharlesTheGreat77/ComboCracker-FZ.git - subdir: - type: git -version: 0.5 diff --git a/applications/Tools/counter/README.md b/applications/Tools/counter/README.md deleted file mode 100644 index e73e462b..00000000 --- a/applications/Tools/counter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![counter](https://catalog.flipperzero.one/application/counter/widget)](https://catalog.flipperzero.one/application/counter/page) \ No newline at end of file diff --git a/applications/Tools/counter/manifest.yml b/applications/Tools/counter/manifest.yml deleted file mode 100644 index 64c49ec4..00000000 --- a/applications/Tools/counter/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/counter -description: "Simple counter" -changelog: "v1.0 - Initial release, v1.1 - Icon fixes, v1.2 - Sync Updates, v1.3 - Various fixes, v1.4 - Sync updates and latest API support, v1.5 - Sync with latest version" -author: "@Krulknul" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/Tools/dcf77/README.md b/applications/Tools/dcf77/README.md deleted file mode 100644 index b411fefd..00000000 --- a/applications/Tools/dcf77/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![dcf77](https://catalog.flipperzero.one/application/dcf77/widget)](https://catalog.flipperzero.one/application/dcf77/page) \ No newline at end of file diff --git a/applications/Tools/dcf77/manifest.yml b/applications/Tools/dcf77/manifest.yml deleted file mode 100644 index e8733a84..00000000 --- a/applications/Tools/dcf77/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/flipper-dcf77 -description: "Sends the DCF77 time signal (badly) on the 125khz LFRFID antenna and on GPIO C3 pin" -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Fixes for latest API, v1.3 - Sync updates and latest API support, v1.4 - Sync with latest version" -author: "@arha & @xMasterX" -screenshots: - - "./img/1.png" diff --git a/applications/Tools/dcf77_clock_spoof/README.md b/applications/Tools/dcf77_clock_spoof/README.md deleted file mode 100644 index 012d8ddf..00000000 --- a/applications/Tools/dcf77_clock_spoof/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# Flipper-Zero DCF77 Clock Spoof - -Spoofs a [DCF77](https://en.wikipedia.org/wiki/DCF77) time signal of a selectable time on the RFID antenna and on GPIO A4 pin. - -Uses PWM with frequency of 77.5 kHz on the GPIO pin to simulate the signal. - -## Roadmap - -> I will probably working on this very soon - -- Add the option to also change the date. Currently the date can only implicitable be changed by overflow (constantly move hour up until in the next day and vice versa) -- Add the option to also send "fake" signals that the DCF77 protocol does allow to mess with clocks who don't check that. For example the DCF77 protocol allows to send 25:63 as a "valid" time - -## Usage - -Normally a nearby clock listening to the DCF77 signal gets synchronized in two to five minutes depending on the signal strength. - -Default mode controls: -- Press OK to toggle the LED blinking -- Press up/down to toggle between CEST (dst) and CET time -- Press right/left to enter edit mode - -Edit mode controls: -- Press right/left to select hours, minutes or seconds to edit -- Press up/down to edit the selected part of the time (there us overfolow, so e.g. going below 12AM will lead to being at 11AM and subtracting one day from the date) -- Press OK to save the changes and exit edit mode -- Press back to discard the changes and exit edit mode - -## Antenna - -> Disclaimer: For research purposes only. Sending DCF77 is probably illegal in your country, so use this app responsible and only in a small range (therefore you will probably not need an antenna) - -The RFID antenna works best at distances of up to 50cm. The signal gets recognized in few seconds. - -When using the GPIO, best results are achieved if you connect a ferrite antenna over 330 ohm resistor and a capactior to ground. - -It also works with analog beeper or small in-ear headphone connected to the GPIO pin. - -## Note - -This is a fork of https://github.com/mdaskalov/dcf77-clock-sync. Thanks to @mdaskalov for doing the initial work! diff --git a/applications/Tools/dcf77_clock_spoof/manifest.yml b/applications/Tools/dcf77_clock_spoof/manifest.yml deleted file mode 100644 index 4ff40fea..00000000 --- a/applications/Tools/dcf77_clock_spoof/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/molodos/dcf77-clock-spoof.git - commit_sha: b7adfdcc22b38fb5608ef8923e3769ef2e42b269 -short_description: "Spoof a DCF77 time signal with a selectable time on the RFID antenna and the A4 GPIO pin" -description: "@README.md" -changelog: "@.catalog/changelog.md" -author: "Molodos" -screenshots: - - ".catalog/screens/1.png" - - ".catalog/screens/2.png" diff --git a/applications/Tools/dcf77_clock_sync/README.md b/applications/Tools/dcf77_clock_sync/README.md deleted file mode 100644 index df1a0d78..00000000 --- a/applications/Tools/dcf77_clock_sync/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# DCF77 Clock Sync -Emulates the [DCF77](https://en.wikipedia.org/wiki/DCF77) time signal on the RFID antenna and on GPIO A4 pin. - -Uses PWM with frequency of 77.5 kHz on the GPIO pin to simulate the signal. - -# Usage - -Normally the clock gets syncrhonized in two to five minutes depending on the signal strength. - -The OK button changes the transmitted signal between CET and CEST (dst) time. - -# Antenna -The RFID antenna wokrs best at distances of up to 50cm. The signal gets recognized in few seconds. - -When using the GPIO, best results are achieved if you connect a ferrite antenna over 330 ohm resistor and a capactior to ground. - -It also works with analog beeper or small in-ear headphone connected to the GPIO pin. diff --git a/applications/Tools/dcf77_clock_sync/manifest.yml b/applications/Tools/dcf77_clock_sync/manifest.yml deleted file mode 100644 index 06c2ae8f..00000000 --- a/applications/Tools/dcf77_clock_sync/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/mdaskalov/dcf77-clock-sync.git - commit_sha: 51846ed5071bebda1f499e25df3e00942cdc2c30 -short_description: "Emulate DCF77 time signal on the RFID antenna and the A4 GPIO pin" -description: "@README.md" -changelog: "v1.3 - Use DateTime format, improved UI refresh" -author: "mdaskalov" -screenshots: - - "./img/1.png" diff --git a/applications/Tools/dtmf_dolphin/README.md b/applications/Tools/dtmf_dolphin/README.md deleted file mode 100644 index 240e1f68..00000000 --- a/applications/Tools/dtmf_dolphin/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![dtmf_dolphin](https://catalog.flipperzero.one/application/dtmf_dolphin/widget)](https://catalog.flipperzero.one/application/dtmf_dolphin/page) \ No newline at end of file diff --git a/applications/Tools/dtmf_dolphin/manifest.yml b/applications/Tools/dtmf_dolphin/manifest.yml deleted file mode 100644 index 480fe37d..00000000 --- a/applications/Tools/dtmf_dolphin/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: base_pack/dtmf_dolphin -description: "DTMF (Dual-Tone Multi-Frequency) dialer, Bluebox, and Redbox." -changelog: "v1.0 - Initial release, v1.1 - Icon fixes, v1.2 - Sync Updates, v1.3 - Sync updates and latest API support, v1.4 - Sync with latest version" -author: "@litui & @xMasterX" -screenshots: - - "./img/2.png" - - "./img/3.png" - - "./img/1.png" diff --git a/applications/Tools/enigma/README.md b/applications/Tools/enigma/README.md deleted file mode 100644 index cbc47c0e..00000000 --- a/applications/Tools/enigma/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![enigma](https://catalog.flipperzero.one/application/enigma/widget)](https://catalog.flipperzero.one/application/enigma/page) \ No newline at end of file diff --git a/applications/Tools/enigma/manifest.yml b/applications/Tools/enigma/manifest.yml deleted file mode 100644 index ebe25efa..00000000 --- a/applications/Tools/enigma/manifest.yml +++ /dev/null @@ -1,16 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xtruan/flipper-enigma.git - commit_sha: d29abc555a889c643edd0ee3ad2fda3ad9f57cf6 -description: "Enigma cipher machine simulator" -changelog: "v1.1 - Added more rotors (VI, VII, VIII)" -author: "@xtruan" -screenshots: - - "./catalog/startscreen.png" - - "./catalog/menu.png" - - "./catalog/rotor11.png" - - "./catalog/plaintext1.png" - - "./catalog/ciphertext1.png" - - "./catalog/plugtext2.png" - - "./catalog/plugboard2.png" diff --git a/applications/Tools/eye_saver/README.md b/applications/Tools/eye_saver/README.md deleted file mode 100644 index 1bab937f..00000000 --- a/applications/Tools/eye_saver/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# What does this app do? - -This app is designed to prevent eye strain when looking at a screen for extended periods of time. 69 percent of Americans have reported eye strain at least once a week, and this app is designed to minimize eye fatigue and discomfort. - -# Features: - -* Repeating 20 minute timer with haptic feedback -* 20 second break in between timers with haptic feedback -* Message to look outside during break -* About screen for additional info - -# How to use? - -The timer will begin when the app is opened. Once the timer ends a reminder will be displayed for 20 seconds to look outside (preferrably 20 feet away). Once the break ends the timer will repeat. Press **OK** to open the about screen, and **BACK** to both exit the about screen and exit the app. - -# To be added: - -* Adjustable break length -* Adjustable timer length -* Custom break message -* Haptic feedback on and off switch \ No newline at end of file diff --git a/applications/Tools/eye_saver/manifest.yml b/applications/Tools/eye_saver/manifest.yml deleted file mode 100644 index 1b5c4dd7..00000000 --- a/applications/Tools/eye_saver/manifest.yml +++ /dev/null @@ -1,20 +0,0 @@ -author: '@paul-sopin' -category: 'Tools' -description: '@README.md' -changelog: '@changelog.md' -icon: 'eye_saver.png' -id: 'eye_saver' -name: 'Eye Saver' -screenshots: - - 'screenshots/screenshot_1.png' - - 'screenshots/screenshot_2.png' - - 'screenshots/screenshot_3.png' - - 'screenshots/screenshot_4.png' -short_description: 'Simple eye strain prevention tool using the 20-20-20 rule.' -sourcecode: - location: - commit_sha: f67ad0ae9a173ec0683ac1a570b7d1d4dc8bc689 - origin: https://github.com/paul-sopin/flipper-eye-saver.git - subdir: - type: git -version: 0.1 diff --git a/applications/Tools/fast_js_app/README.md b/applications/Tools/fast_js_app/README.md deleted file mode 100644 index b4b52b21..00000000 --- a/applications/Tools/fast_js_app/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![fast_js_app](https://catalog.flipperzero.one/application/fast_js_app/widget)](https://catalog.flipperzero.one/application/fast_js_app/page) \ No newline at end of file diff --git a/applications/Tools/fast_js_app/manifest.yml b/applications/Tools/fast_js_app/manifest.yml deleted file mode 100644 index 1d48887a..00000000 --- a/applications/Tools/fast_js_app/manifest.yml +++ /dev/null @@ -1,19 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/jblanked/FastJS-FlipperZero.git - commit_sha: f3c1156640a8b3ff41c9e155b90d7baceff6bbb1 -short_description: "Pre-save your JavaScript files for quick execution." -description: "@./gallery/README.md" -changelog: "@./gallery/CHANGELOG.md" -author: "JBlanked" -name: "FastJS" -version: "1.3" -id: "fast_js_app" -category: "Tools" -targets: ['all'] -icon: "app.png" -screenshots: - - "gallery/03-config.png" - - "gallery/01-home.png" - - "gallery/02-About.png" \ No newline at end of file diff --git a/applications/Tools/financial_calc/README.md b/applications/Tools/financial_calc/README.md deleted file mode 100644 index 8bb2370e..00000000 --- a/applications/Tools/financial_calc/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![financial_calc](https://catalog.flipperzero.one/application/financial_calc/widget)](https://catalog.flipperzero.one/application/financial_calc/page) \ No newline at end of file diff --git a/applications/Tools/financial_calc/manifest.yml b/applications/Tools/financial_calc/manifest.yml deleted file mode 100644 index c4852729..00000000 --- a/applications/Tools/financial_calc/manifest.yml +++ /dev/null @@ -1,10 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/schaene/Flipper-Financial-Calculator.git - commit_sha: 4e901fda4784b6bcbc4444fe9d580aa07559b768 -description: "A simple TVM Calculator" -changelog: "v1.0 - Initial release" -author: "schaene" -screenshots: - - "screenshot.png" \ No newline at end of file diff --git a/applications/Tools/fire_string/manifest.yml b/applications/Tools/fire_string/manifest.yml deleted file mode 100644 index a71ab93c..00000000 --- a/applications/Tools/fire_string/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/RyanAboueljoud/Fire-String.git - commit_sha: e26bfe8e6cbc4afb36492e51bcf2614498260a28 -description: "@./.catalog/README.md" -changelog: "@./.catalog/CHANGELOG.md" -screenshots: - - "./.catalog/screens/screen0.png" - - "./.catalog/screens/screen1.png" - - "./.catalog/screens/screen2.png" - - "./.catalog/screens/screen3.png" diff --git a/applications/Tools/flip_crypt/manifest.yml b/applications/Tools/flip_crypt/manifest.yml deleted file mode 100644 index bb0acae2..00000000 --- a/applications/Tools/flip_crypt/manifest.yml +++ /dev/null @@ -1,20 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Tyl3rA/FlipCrypt.git - commit_sha: 3b87663616c5322173f4ee2212bc4ab99d424530 -description: "@README.md" -changelog: "@docs/CHANGELOG.md" -author: "@Tyl3rA" -screenshots: - - "./screenshots/screenshot1.png" - - "./screenshots/screenshot2.png" - - "./screenshots/screenshot3.png" - - "./screenshots/screenshot4.png" - - "./screenshots/screenshot5.png" - - "./screenshots/screenshot6.png" - - "./screenshots/screenshot7.png" - - "./screenshots/screenshot8.png" - - "./screenshots/screenshot9.png" - - "./screenshots/screenshot10.png" - - "./screenshots/screenshot11.png" diff --git a/applications/Tools/flipbip/README.md b/applications/Tools/flipbip/README.md deleted file mode 100644 index 699af547..00000000 --- a/applications/Tools/flipbip/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flipbip](https://catalog.flipperzero.one/application/flipbip/widget)](https://catalog.flipperzero.one/application/flipbip/page) \ No newline at end of file diff --git a/applications/Tools/flipbip/manifest.yml b/applications/Tools/flipbip/manifest.yml deleted file mode 100644 index dd52bc18..00000000 --- a/applications/Tools/flipbip/manifest.yml +++ /dev/null @@ -1,17 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xtruan/FlipBIP.git - commit_sha: 62ef09fc3eede4494571d55f3d9340695482781a -description: "Cryptocurrency wallet with support for BTC, ETH, DOGE, and ZEC (t-addr)" -changelog: "v1.17" -author: "@xtruan" -screenshots: - - "./catalog/menu1.png" - - "./catalog/menu2.png" - - "./catalog/input_mnemonic.png" - - "./catalog/btc_loading.png" - - "./catalog/wallet_info.png" - - "./catalog/wallet_mnemonic.png" - - "./catalog/btc_receive.png" - - "./catalog/settings.png" diff --git a/applications/Tools/flipp_pomodoro/README.md b/applications/Tools/flipp_pomodoro/README.md deleted file mode 100644 index 3153b24f..00000000 --- a/applications/Tools/flipp_pomodoro/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flipp_pomodoro](https://catalog.flipperzero.one/application/flipp_pomodoro/widget)](https://catalog.flipperzero.one/application/flipp_pomodoro/page) \ No newline at end of file diff --git a/applications/Tools/flipp_pomodoro/manifest.yml b/applications/Tools/flipp_pomodoro/manifest.yml deleted file mode 100644 index 346b8325..00000000 --- a/applications/Tools/flipp_pomodoro/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/flipp_pomodoro -description: "Boost Your Productivity with the Pomodoro Timer" -changelog: "v1.0 - Initial release, v1.1 - Updated from main repo, v1.2 - Updated from main repo, v1.3 - Sync Updates, v1.4 - Sync updates and latest API support, v1.5 - Sync with latest version" -author: "@Th3Un1q3" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/Tools/flipper95/README.md b/applications/Tools/flipper95/README.md deleted file mode 100644 index 34bc019f..00000000 --- a/applications/Tools/flipper95/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flipper95](https://catalog.flipperzero.one/application/flipper95/widget)](https://catalog.flipperzero.one/application/flipper95/page) \ No newline at end of file diff --git a/applications/Tools/flipper95/manifest.yml b/applications/Tools/flipper95/manifest.yml deleted file mode 100644 index 688b6695..00000000 --- a/applications/Tools/flipper95/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/CookiePLMonster/flipper-bakery.git - commit_sha: 08533bfcd5cc676af5b168d72e4a9381308bbf56 - subdir: flipper95 -description: "@./.catalog/README.md" -changelog: "@./.catalog/CHANGELOG.md" -screenshots: - - "./.catalog/screens/screen0.png" - - "./.catalog/screens/screen1.png" diff --git a/applications/Tools/flipper_wedge/README.md b/applications/Tools/flipper_wedge/README.md deleted file mode 100644 index e7600fd5..00000000 --- a/applications/Tools/flipper_wedge/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flipper_wedge](https://catalog.flipperzero.one/application/flipper_wedge/widget)](https://catalog.flipperzero.one/application/flipper_wedge/page) diff --git a/applications/Tools/flipper_wedge/manifest.yml b/applications/Tools/flipper_wedge/manifest.yml deleted file mode 100644 index 67cb0ea8..00000000 --- a/applications/Tools/flipper_wedge/manifest.yml +++ /dev/null @@ -1,28 +0,0 @@ -id: flipper_wedge -name: "Flipper Wedge" -version: "1.1" -category: "Tools" - -short_description: "Read RFID/NFC tags and type UIDs as HID keyboard input via USB or Bluetooth. Supports NDEF text records. Inspired by the Dangerous Things KBR1" - -description: "@README_CATALOG.md" - -changelog: "@CHANGELOG_CATALOG.md" - -author: "Dangerous Things" - -sourcecode: - type: git - location: - origin: https://github.com/DangerousThings/flipper-wedge.git - commit_sha: ac2ee356d6ad1d21e31591697684f8cd835f7310 - -icon: "icons/flipper_wedge_10px.png" - -screenshots: - - './screenshots/01_nfc_scanning.png' - - './screenshots/02_rfid_scanning.png' - - './screenshots/03_ndef_mode.png' - - './screenshots/04_rfid+nfc.png' - - './screenshots/05_nfc+rfid.png' - - './screenshots/06_settings.png' diff --git a/applications/Tools/flipperzero_clock/README.md b/applications/Tools/flipperzero_clock/README.md deleted file mode 100644 index 7afbc68b..00000000 --- a/applications/Tools/flipperzero_clock/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![dcf77](https://catalog.flipperzero.one/application/flipperzero_clock/widget)](https://catalog.flipperzero.one/application/flipperzero_clock/page) \ No newline at end of file diff --git a/applications/Tools/flipperzero_clock/manifest.yml b/applications/Tools/flipperzero_clock/manifest.yml deleted file mode 100644 index 78465fd3..00000000 --- a/applications/Tools/flipperzero_clock/manifest.yml +++ /dev/null @@ -1,16 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/mdaskalov/flipperzero-clock.git - commit_sha: 63bb18a07d577f183d25c633ab120327cb4a0fa3 -short_description: "FlipperZero Customizable Clock" -description: "@README.md" -changelog: "v1.2 - Drawing optimizations, v1.3 - fixed weekday" -author: "mdaskalov" -screenshots: - - "./img/1.png" - - "./img/2.png" - - "./img/3.png" - - "./img/4.png" - - "./img/5.png" - - "./img/6.png" diff --git a/applications/Tools/fmatrix/README.md b/applications/Tools/fmatrix/README.md deleted file mode 100644 index 92af59a8..00000000 --- a/applications/Tools/fmatrix/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# fmatrix v0.3.5 -fmatrix is a simple Flipper Zero app that displays the famous "matrix rain" effect. -(suggestions appreciated and welcome!) - -## Menu breakdown - -Main menu: - -Make it rain! - Makes it rain (Displays the matrix effect.) -Configure fmatrix - Configuration menu for tweaking fmatrix. -Exit - Does exactly what you think it does; exits the app. - -Options menu: - -UPPERCASE: Toggle whether or not uppercase letters are displayed when characters are randomly chosen. - (default YES) - -lowercase: Toggle whether or not lowercase letters are displayed when characters are randomly chosen. - (default NO) - -Numbers: Toggle whether or not numbers are displayed when characters are randomly chosen. - (default NO) - -Symbols: Toggle whether or not symbols are displayed when characters are randomly chosen. - (default NO) - -Inverted Mode: Toggle whether or not the app makes the text and menu content white and the background black (makes everything inverted!) - (default NO) - -Max Speed: The fastest possible matrix rain can go. - (1-20, default 3) - -Min Speed: The slowest possible matrix rain can go. - (1-20, default 1) - -Spawn Rate: The rate that matrix rain spawns in on the screen. - (1-10, default 5) - -Max Length: The most longest possible matrix rain can become/spawn as. - (1-10, default 10) - -Min Length: The smallest possible matrix rain can become/spawn as. - (1-10, default 3) - -## How can I install fmatrix? - -There's lot's of ways, but i'll just list three: - -1: You can install fmatrix from the Flipper Lab above, or for those who are on the Github, here: https://lab.flipper.net/apps/fmatrix - -2: Compile it in a .fap file format using ufbt (https://github.com/flipperdevices/flipperzero-ufbt) and move it to your Flipper Zero using qFlipper (https://flipperzero.one/update) - -3: On the GitHub repo (repo link below if on the Flipper Lab), download **the .fap file** from the Releases section and move it to your Flipper Zero using qFlipper (https://flipperzero.one/update), however it may be more up-to-date or farther behind. diff --git a/applications/Tools/fmatrix/manifest.yml b/applications/Tools/fmatrix/manifest.yml deleted file mode 100644 index c0fde2b9..00000000 --- a/applications/Tools/fmatrix/manifest.yml +++ /dev/null @@ -1,40 +0,0 @@ ---- - sourcecode: - type: git - location: - origin: https://github.com/misterwaztaken/fmatrix.git - commit_sha: 1a54a13dbd50be98574035ada9616c6327ac297b - short_description: The 'matrix rain' effect for the Flipper Zero. - version: 0.3.5 - description: "@README.md" - changelog: > - - v0.3.5: - - - added inverted mode; inverts the background and the text such that the background is all-black and the letters are white - - v0.3: - - - added menu for fmatrix - - added a submenu for options (for configuring fmatrix) - - added options for lowercase letters, numbers, and symbols - - added options to control spawn rate, max/min speed, and max/min character trail length - - - v0.2: - - - added screenshots in preparation to upload to application catalog - - wrote and committed final edits to manifest.yml - - - v0.1: - - - initialized repository (woo!) - - moved project to a github repo, started changelog - screenshots: - - screenshots/ss1.png - - screenshots/ss2.png - - screenshots/ss3.png - - screenshots/ss4.png - - screenshots/ss5.png - diff --git a/applications/Tools/fordradiocode/README.md b/applications/Tools/fordradiocode/README.md deleted file mode 100644 index 41926c8b..00000000 --- a/applications/Tools/fordradiocode/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![fordradiocode](https://catalog.flipperzero.one/application/fordradiocode/widget)](https://catalog.flipperzero.one/application/fordradiocode/page) \ No newline at end of file diff --git a/applications/Tools/fordradiocode/changelog.md b/applications/Tools/fordradiocode/changelog.md deleted file mode 100644 index a563b31f..00000000 --- a/applications/Tools/fordradiocode/changelog.md +++ /dev/null @@ -1,2 +0,0 @@ -v0.1: -Initial Release diff --git a/applications/Tools/fordradiocode/manifest.yml b/applications/Tools/fordradiocode/manifest.yml deleted file mode 100644 index 56e84211..00000000 --- a/applications/Tools/fordradiocode/manifest.yml +++ /dev/null @@ -1,17 +0,0 @@ -sourcecode: - name: Ford Radio Codes - id: fordradiocode - category: Tools - version: 0.1 - type: git - location: - origin: https://github.com/DavidB445/fz_fordradiocodes.git - commit_sha: c3e3aa7d8282515d5ddd7dc3cd738e68462a0e5e -short_description: Ford Radio 'M' & 'V' Unlock Code Generator! -description: | - Instantly generate unlock codes for for 'M' and 'V' series radios directly on your Flipper Zero! - Simply enter the radio's serial number using the UP and DOWN buttons and the 4-digit unlock code will be shown. -changelog: "@changelog.md" -author: '@DavidB445' -screenshots: - - screenshots/mainscreen.png diff --git a/applications/Tools/hex_editor/README.md b/applications/Tools/hex_editor/README.md deleted file mode 100644 index 06cc8678..00000000 --- a/applications/Tools/hex_editor/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![hex_editor](https://catalog.flipperzero.one/application/hex_editor/widget)](https://catalog.flipperzero.one/application/hex_editor/page) \ No newline at end of file diff --git a/applications/Tools/hex_editor/manifest.yml b/applications/Tools/hex_editor/manifest.yml deleted file mode 100644 index 4240d9af..00000000 --- a/applications/Tools/hex_editor/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/hex_editor -description: "@README-catalog.md" -changelog: "v1.0 - Initial release, v1.1 - Description update, v1.2 - Sync Updates, v1.3 - Sync updates and latest API support, v1.4 - Sync with latest version" -author: "@dunaevai135" -screenshots: - - "./img/1.png" diff --git a/applications/Tools/hex_viewer/README.md b/applications/Tools/hex_viewer/README.md deleted file mode 100644 index 2d34aa2d..00000000 --- a/applications/Tools/hex_viewer/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![hex_viewer](https://catalog.flipperzero.one/application/hex_viewer/widget)](https://catalog.flipperzero.one/application/hex_viewer/page) \ No newline at end of file diff --git a/applications/Tools/hex_viewer/manifest.yml b/applications/Tools/hex_viewer/manifest.yml deleted file mode 100644 index 22dc8d05..00000000 --- a/applications/Tools/hex_viewer/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/QtRoS/flipper-zero-hex-viewer.git - commit_sha: 868d25451684cc55ff918526df4562fe07e58c66 -description: "App allows to view various files as HEX." -changelog: "v2.0 - Scrolling to any % and interal refactoring, v1.1 - Various important fixes, v1.0 - Initial release" -author: "@QtRoS" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/Tools/iconedit/manifest.yml b/applications/Tools/iconedit/manifest.yml deleted file mode 100644 index 0d5ed634..00000000 --- a/applications/Tools/iconedit/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/rdefeo/iconedit.git - commit_sha: 82fda63fd980f651e7e2ff678c129221200bac7b -changelog: "@./CHANGELOG.md" -description: "@./README_flipperlab.md" -author: "Roberto De Feo" -screenshots: - - "./screenshots/iconedit_screenshot_1.png" - - "./screenshots/iconedit_screenshot_2.png" - - "./screenshots/iconedit_screenshot_3.png" - - "./screenshots/iconedit_screenshot_4.png" diff --git a/applications/Tools/key_copier/README.md b/applications/Tools/key_copier/README.md deleted file mode 100644 index d7af96c4..00000000 --- a/applications/Tools/key_copier/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![key_copier](https://catalog.flipperzero.one/application/key_copier/widget)](https://catalog.flipperzero.one/application/key_copier/page) \ No newline at end of file diff --git a/applications/Tools/key_copier/manifest.yml b/applications/Tools/key_copier/manifest.yml deleted file mode 100644 index 42ff1cb9..00000000 --- a/applications/Tools/key_copier/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/zinongli/KeyCopier.git - commit_sha: ec2c7b46b8be8e1e667055421c543f1380b32d9a -description: "To measure your key:\n\n1. Place it on top of the screen.\n\n2. Use the contour to align your key.\n\n3. Adjust each pin's depth until they match. It's easier if you look with one eye closed." -changelog: "@CHANGELOG.md" -author: "Torron" -screenshots: - - "screenshots/kw1.png" - - "screenshots/main_menu.png" - - "screenshots/config.png" - - "screenshots/load.png" \ No newline at end of file diff --git a/applications/Tools/knit_counter/README.md b/applications/Tools/knit_counter/README.md deleted file mode 100644 index a59c17c6..00000000 --- a/applications/Tools/knit_counter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![knit_counter](https://catalog.flipperzero.one/application/knit_counter/widget)](https://catalog.flipperzero.one/application/knit_counter/page) \ No newline at end of file diff --git a/applications/Tools/knit_counter/manifest.yml b/applications/Tools/knit_counter/manifest.yml deleted file mode 100644 index 366351b5..00000000 --- a/applications/Tools/knit_counter/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/fridgepoet/knit-counter.git - commit_sha: 77d9b5084a9328f6edd95d5bd880f09a02ce0239 -short_description: Counter that saves after exiting -description: | - # Knit Counter - This counter saves the count after exiting the app or restarting the Flipper. - - This can be useful for knitting, since a knit counter is a tally counter for counting pattern repetitions in a stitch pattern, typically rows. -changelog: "@CHANGELOG.md" -screenshots: - - ./screenshots/1.png diff --git a/applications/Tools/lishi/README.md b/applications/Tools/lishi/README.md deleted file mode 100644 index f2fb94cd..00000000 --- a/applications/Tools/lishi/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![lishi](https://catalog.flipperzero.one/application/lishi/widget)](https://catalog.flipperzero.one/application/lishi/page) \ No newline at end of file diff --git a/applications/Tools/lishi/manifest.yml b/applications/Tools/lishi/manifest.yml deleted file mode 100644 index 3d9c5d08..00000000 --- a/applications/Tools/lishi/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/evillero/lishi - commit_sha: 7a7e33091549271777f0842bf01f726eff805096 -description: "@.catalog/README.md" -changelog: "@.catalog/CHANGELOG.md" -author: "@evillero" -screenshots: - - ".catalog/screenshots/screenshot1.png" - - ".catalog/screenshots/screenshot2.png" - - ".catalog/screenshots/screenshot3.png" diff --git a/applications/Tools/moon_phases/manifest.yml b/applications/Tools/moon_phases/manifest.yml deleted file mode 100644 index e2958c20..00000000 --- a/applications/Tools/moon_phases/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/w84death/moon-phases.git - commit_sha: 5d6380dccf5a7fa56abac6593a6d90c3e6777b95 -description: "A simple application to display the current phase of the moon along with additional lunar information." -version: 1.1 -changelog: "@CHANGELOG.md" -author: "Krzysztof Krystian Jankowski" -screenshots: - - "screenshots/screen1.png" - - "screenshots/screen2.png" diff --git a/applications/Tools/multi_converter/README.md b/applications/Tools/multi_converter/README.md deleted file mode 100644 index fd50039b..00000000 --- a/applications/Tools/multi_converter/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![multi_converter](https://catalog.flipperzero.one/application/multi_converter/widget)](https://catalog.flipperzero.one/application/multi_converter/page) \ No newline at end of file diff --git a/applications/Tools/multi_converter/manifest.yml b/applications/Tools/multi_converter/manifest.yml deleted file mode 100644 index bdda4429..00000000 --- a/applications/Tools/multi_converter/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: base_pack/multi_converter -description: "A multi-unit converter written with an easy and expandable system for adding new units and conversion methods" -changelog: "v1.0 - Initial release, v1.1 - Various important fixes, v1.2 - Sync updates and latest API support, v1.3 - Sync with latest version" -author: "@theisolinearchip" -screenshots: - - "./img/4.png" - - "./img/2.png" - - "./img/3.png" - - "./img/1.png" diff --git a/applications/Tools/multi_counter/README.md b/applications/Tools/multi_counter/README.md deleted file mode 100644 index 3ead835c..00000000 --- a/applications/Tools/multi_counter/README.md +++ /dev/null @@ -1,12 +0,0 @@ -## Status - -[![multi_counter](https://catalog.flipperzero.one/application/multi_counter/widget)](https://catalog.flipperzero.one/application/multi_counter/page) - -# Flipper Multi Counter -This is a simple external application for the Flipper Zero modified from [VS Counter](https://github.com/JadePossible/Flipper-Versus-Counter) version. -The app give you access to up to 4 counters to count your scores for tabletop games for example. - -# How To Use ? -The UP and DOWN buttons are for adding or subbing one from the selected player -And LEFT and RIGHT to switch between players -You can also (un)toggle the sound with the OK key diff --git a/applications/Tools/multi_counter/manifest.yml b/applications/Tools/multi_counter/manifest.yml deleted file mode 100644 index 0a5c55d7..00000000 --- a/applications/Tools/multi_counter/manifest.yml +++ /dev/null @@ -1,18 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/JadePossible/Flipper-Multi-Counter - commit_sha: d1199a11c614af8cb5e21c0842b46cb0ef9cd0fe -description: | - # Flipper Multi Counter - This is a simple external application for the Flipper Zero modified from [VS Counter](https://github.com/JadePossible/Flipper-Versus-Counter) version. - The app give you access to up to 4 counters to count your scores for tabletop games for example. - - # How To Use ? - The UP and DOWN buttons are for adding or subbing one from the selected player - And LEFT and RIGHT to switch between players - You can also (un)toggle the sound with the OK key -changelog: "v1.0 - Initial release" -author: "@JadePossible & Roro" -screenshots: - - "./media/1.png" diff --git a/applications/Tools/nfc_rfid_detector/README.md b/applications/Tools/nfc_rfid_detector/README.md deleted file mode 100644 index 4b2258a5..00000000 --- a/applications/Tools/nfc_rfid_detector/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![nfc_rfid_detector](https://catalog.flipperzero.one/application/nfc_rfid_detector/widget)](https://catalog.flipperzero.one/application/nfc_rfid_detector/page) \ No newline at end of file diff --git a/applications/Tools/nfc_rfid_detector/manifest.yml b/applications/Tools/nfc_rfid_detector/manifest.yml deleted file mode 100644 index 22b0e234..00000000 --- a/applications/Tools/nfc_rfid_detector/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/flipperdevices/flipperzero-good-faps.git - commit_sha: b791dea234f855155027bb46215dc60f3ddeb243 - subdir: nfc_rfid_detector -description: "@.catalog/README.md" -changelog: "@.catalog/changelog.md" -author: "@SkorP" -screenshots: - - ".catalog/gallery/nfc-rfid-both-detected.png" - - ".catalog/gallery/nfc-rfid-detection.png" - - ".catalog/gallery/nfc-rfid-nfc-detected.png" - - ".catalog/gallery/nfc-rfid-rfid-detected.png" diff --git a/applications/Tools/orgasmotron/README.md b/applications/Tools/orgasmotron/README.md deleted file mode 100644 index d6b6f105..00000000 --- a/applications/Tools/orgasmotron/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![orgasmotron](https://catalog.flipperzero.one/application/orgasmotron/widget)](https://catalog.flipperzero.one/application/orgasmotron/page) \ No newline at end of file diff --git a/applications/Tools/orgasmotron/manifest.yml b/applications/Tools/orgasmotron/manifest.yml deleted file mode 100644 index 8167e963..00000000 --- a/applications/Tools/orgasmotron/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/leedave/Leeds-Flipper-Zero-Applications - commit_sha: 0876a7da9af1824cd3eed2bfb9954f333fa8a762 - subdir: Misc/orgasmotron -description: "@./docs/README.md" -changelog: "@./docs/changelog.md" -author: "Leedave" -screenshots: - - "./screenshots/orgasmotron-1.png" diff --git a/applications/Tools/passgen/README.md b/applications/Tools/passgen/README.md deleted file mode 100644 index 23d51370..00000000 --- a/applications/Tools/passgen/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![passgen](https://catalog.flipperzero.one/application/passgen/widget)](https://catalog.flipperzero.one/application/passgen/page) \ No newline at end of file diff --git a/applications/Tools/passgen/manifest.yml b/applications/Tools/passgen/manifest.yml deleted file mode 100644 index 99cdf928..00000000 --- a/applications/Tools/passgen/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/flipper_passgen -description: "Password Generator" -changelog: "v1.0 - Initial release, v1.1 - Updates, v1.2 - Sync Updates, v1.3 - Sync updates and latest API support, v1.4 - Sync with latest version" -name: "Password Generator" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/Tools/password_manager/manifest.yml b/applications/Tools/password_manager/manifest.yml deleted file mode 100644 index 02319140..00000000 --- a/applications/Tools/password_manager/manifest.yml +++ /dev/null @@ -1,17 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Rrycbarm/flipperZeroPasswordManager - commit_sha: 8d02154358a2ba583268353a24cedabe9485c43f -short_description: This app stores your usernames and password and can write them on your PC acting as a keyboard -description: "@README_catalog.md" -changelog: "@CHANGELOG.md" -author: "Rrycbarm" -screenshots: - - img/01-menu.png - - img/02-saved.png - - img/03-insert.png - - img/04-insert.png - - img/05-insert.png - - img/06-delete.png - - img/07-delete.png \ No newline at end of file diff --git a/applications/Tools/pet_your_dolphin/README.md b/applications/Tools/pet_your_dolphin/README.md deleted file mode 100644 index 2f2199f6..00000000 --- a/applications/Tools/pet_your_dolphin/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![pet_your_dolphin](https://catalog.flipperzero.one/application/pet_your_dolphin/widget)](https://catalog.flipperzero.one/application/pet_your_dolphin/page) \ No newline at end of file diff --git a/applications/Tools/pet_your_dolphin/manifest.yml b/applications/Tools/pet_your_dolphin/manifest.yml deleted file mode 100644 index 4a1f882b..00000000 --- a/applications/Tools/pet_your_dolphin/manifest.yml +++ /dev/null @@ -1,9 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/dwight9339/pet_your_dolphin - commit_sha: 517a2c279b2aad6de8ff6015aa836676ab0d6f19 -description: "The Pet Your Dolphin app let's you check in on your little dolphin buddy! Stop by daily to give it some pets to improve its mood and earn XP!" -changelog: "@./docs/changelog.md" -screenshots: - - screenshots/petting_dolphin_2.png \ No newline at end of file diff --git a/applications/Tools/pomodoro_timer/README.md b/applications/Tools/pomodoro_timer/README.md deleted file mode 100644 index 164d0a1b..00000000 --- a/applications/Tools/pomodoro_timer/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![pomodoro_timer](https://catalog.flipperzero.one/application/pomodoro_timer/widget)](https://catalog.flipperzero.one/application/pomodoro_timer/page) \ No newline at end of file diff --git a/applications/Tools/pomodoro_timer/manifest.yml b/applications/Tools/pomodoro_timer/manifest.yml deleted file mode 100644 index eefad18e..00000000 --- a/applications/Tools/pomodoro_timer/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/pomodoro -description: "@README-catalog.md" -changelog: "v1.0 - Initial release, v1.1 - Description update, v1.2 - Sync Updates, v1.3 - Fixes for latest API, v1.4 - Sync updates and latest API support, v1.5 - Sync with latest version" -author: "@sbrin" -screenshots: - - "./img/2.png" diff --git a/applications/Tools/programmercalc/README.md b/applications/Tools/programmercalc/README.md deleted file mode 100644 index 1e7b1fc7..00000000 --- a/applications/Tools/programmercalc/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![programmercalc](https://catalog.flipperzero.one/application/programmercalc/widget)](https://catalog.flipperzero.one/application/programmercalc/page) \ No newline at end of file diff --git a/applications/Tools/programmercalc/manifest.yml b/applications/Tools/programmercalc/manifest.yml deleted file mode 100644 index 6ce4f9fb..00000000 --- a/applications/Tools/programmercalc/manifest.yml +++ /dev/null @@ -1,17 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/armixz/Flipper-Zero-Programmer-Calculator.git - commit_sha: 4f42d7ad99f46a14e372040c0a310fb3ccbd62d9 -description: "@docs/README_catalog.md" -changelog: "@docs/changelog.md" -author: "@armixz" -screenshots: - - "./img/1.png" - - "./img/2.png" - - "./img/3.png" - - "./img/4.png" - - "./img/5.png" - - "./img/6.png" - - "./img/7.png" - - "./img/8.png" \ No newline at end of file diff --git a/applications/Tools/qrcode/README.md b/applications/Tools/qrcode/README.md deleted file mode 100644 index 15c212bc..00000000 --- a/applications/Tools/qrcode/README.md +++ /dev/null @@ -1,204 +0,0 @@ -[![qrcode](https://catalog.flipperzero.one/application/qrcode/widget)](https://catalog.flipperzero.one/application/qrcode/page) - -# flipperzero-qrcode -Display qrcodes on the [Flipper Zero] - -![qrcode screenshot](https://github.com/bmatcuk/flipperzero-qrcode/blob/main/ss2.png?raw=true) - -## Github -Additional information about this project can be found in the [qrcode repo] on -github. - -## Creating QR Codes -qrcode files are simple text files with the extension `.qrcode`. This app will -expect them to live in a top-level directory on your sd card called `qrcodes`. -They should have the following content: - -``` -Filetype: QRCode -Version: 0 -Message: your content here -``` - -qrcode v2 supports a newer format as well (the old format still works for -backward compatibility, or, if you don't need the newer features, the app will -read version "0" files faster): - -``` -Filetype: QRCode -Version: 1 -QRMode: B -QRVersion: 6 -QRECC: L -Message: your content here -Message: multi-line content is possible -``` - -In a version "1" file, the `QRMode`, `QRVersion`, and `QRECC` are optional -(though, must be in that order if more than one are specified). The app will -attempt to use the specified mode, version, and/or ECC, if the content will -fit. Otherwise, it may select a different mode, version, and/or ECC. Keep -reading to learn about the meaning of `QRMode`, `QRVersion`, and `QRECC`. - -Version "1" files also support multi-line content. Each line starting with -`Message:` will be concatenated together with newline characters. - -My recommendation is to allow the app to select a mode, version, and ECC level -for you and, then, if you find that your qrcode reader prefers specific -settings, update the file appropriately. - -### Message Format -qrcodes support 4 formats called "modes": numeric, alpha-numeric, binary, and -kanji. Because of the limited screen real-estate on the [Flipper Zero], you'll -want to pick the best mode for the data you are trying to display. - -If unspecified in the `.qrcode` file, the app will automatically detect the -best mode to use based on the message content. - -#### Numeric Mode (QRMode: N) -Consists of only numbers, nothing else. This mode can encode the most data and -is useful for things like phone numbers. To use this mode, your message must -_not_ contain non-numeric characters. For example, a message content of "(xxx) -xxx-xxxx" can _not_ use numeric mode (it would require "binary" mode, in fact). -Instead, your message should just be "xxxxxxxxxx". - -#### Alpha-Numeric Mode (QRMode: A) -This mode can encode numbers, uppercase letters *only*, spaces, and the -following symbols: `$%*+-./:`. This format _may_ be appropriate for urls, as -long as you're only encoding the domain name and you remember to use uppercase -letters (ex: `HTTP://EXAMPLE.COM`). If your url includes some path after the -domain, you'll likely need to use binary mode because the paths are usually -case-sensitive. - -A qrcode in alpha-numeric mode can encode ~40% less data than numeric mode. - -#### Binary Mode (QRMode: B) -This mode is a little bit of a misnomer: binary mode simply means that the -message will be encoded as 8-bit bytes. The qrcode standard stipulates that -text will use ISO-8859-1 (also known as Latin-1) encoding, _not_ utf8 as would -be the standard these days. However, _some_ readers _may_ automatically detect -utf8. To be standard-compliant, that basically means you can only use Latin -letters, numbers, and symbols. - -Multi-line messages will always be in binary mode, since the other modes cannot -encode a newline character. - -A qrcode in binary mode can encode ~60% less data than numeric mode, and ~30% -less than alpha-numeric. - -#### Kanji Mode (QRMode: K) -This mode is unsupported, so I won't go into detail. A limitation of the -underlying qrcode library that I'm using, unfortunately. If there's interest, -perhaps I'll hack in support sometime. - -### QRVersion -A qrcode's version specifies how "big" it is. Higher versions contain more -"modules" (ie, the "pixels" that make up qrcodes) and, thus, can encode more -data. A version 1 qrcode contains 21x21 modules, whereas a version 11 code (the -largest the Flipper Zero can display) contains 61x61 modules. The modules of a -version 1 code will be 3x3 pixels on the Flipper Zero screen; version 2 and 3 -qrcodes will each have 2x2 pixel modules; and version 4 through 11 qrcodes will -have single pixel modules. - -If unspecified in the `.qrcode` file, the app will automatically select the -lowest version that can contain all of the message content, given the mode -selected in the previous step. - -### QRECC -A qrcode's ECC level determines the qrcode's resilience to "damage". In the -case of the Flipper Zero, "damage" might be a dirty screen, dead pixels, or -even screen glare. Higher ECC modes are more resilient, but can contain less -data. The ECC modes are Low, Medium, Quartile, and High and can be specified in -the `.qrcode` file using the first letter (L, M, Q, and H). - -qrcode readers may have an easier time reading qrcodes with higher ECC levels, -so, if unspecified in the `.qrcode` file, the app will select the highest ECC -level that can contain all of the message content, given the qrcode mode and -version selected in the previous steps. - -## Using the App -The app is fairly straightforward. When it first starts, the file browser will -automatically open to the `qrcodes` directory and display any `.qrcode` files. -Select one using the arrow keys and the center button. The qrcode will display. -If you push the right arrow, some stats will display: the qrcode "Version"; the -ECC level; and the qrcode Mode (Numeric, Alpha-Numeric, Binary, or Kanji). - -While viewing the stats, you can select Version or ECC using the up and down -arrows and the center button. You can then increase or decrease the Version or -ECC using up and down and save your choice using the center buttton. This -feature was mostly added for my own amusement and testing, but, theoretically, -it may help a reader that's having trouble if the default ECC is less than the -highest value ("H"): you can increase the Version by 1 and then set the ECC to -"H". Whether or not this helps depends on the reader. - -You can hide the stats by pressing the left arrow. - -When you're done viewing the qrcode, press the back button to return to the -file browser. If you push the back button in the file browser, the app will -exit. - -I will ask that you temper your expectations: the Flipper Zero screen is small -and many readers may have difficulty reading the qrcodes, especially if they -are encoding a lot of data. However, I have successfully got my iPhone to read -qrcodes encoding phone numbers, wifi info, and a url, all the way up to a -version 11 qrcode (ie, the largest size the screen will fit). - -## Example: Wifi QRCodes -Most phones can automatically connect to wifi networks from a qrcode. If you -should like to encode your wifi's connection info into a qrcode, here's how -you'd do it: - -``` -Filetype: QRCode -Version: 0 -Message: WIFI:S:;P:;T:; -``` - -Replace `` with the name of your wifi, `` with the password. -`` would be "WPA" or "WEP". If your wifi is open (no password), -this can be "None" and you can remove `P:;` from the message. If your -wifi is hidden (ie, does not broadcast the ssid), you can add `H:true;` to the -end. - -Note that if your ssid or password contain any of these characters: `\";,:`, -you'll need to "escape" it by placing a backslash (`\`) before it. - -For example, if my ssid was "wifiball" and not broadcast, and the password was -"pa$$:word" with WPA encryption, the message would be: - -``` -Message: WIFI:S:wifiball;P:pa$$\:word;T:WPA;H:true; -``` - -## Example: vCard -Phones can scan [vCard] qrcodes to automatically add a contact to their address -book. Starting with qrcode v2, multi-line qrcodes can be created, allowing you -to create vCards! - -``` -Filetype: QRCode -Version: 1 -Message: BEGIN:VCARD -Message: VERSION:3.0 -Message: N:Smith;John -Message: FN:John Smith -Message: ADR;TYPE=dom,home,postal,parcel:;;123 Example St;Exampleton;CA;90210; -Message: BDAY:1970-01-01 -Message: TEL;TYPE=pref,voice,msg,cell:+18005551212 -Message: END:VCARD -``` - -Check the [vCard] specification to learn about all of the fields and their -values. - -## qrcode library -This application uses the [QRCode] library by ricmoo. This is the same library -that is in the lib directory of the flipper-firmware repo (which was originally -included for a [now-removed demo app]), but modified slightly to fix some -compiler errors and allow the explicit selection of the qrcode mode. - -[now-removed demo app]: https://github.com/flipperdevices/flipperzero-firmware/pull/160/files -[Flipper Zero]: https://flipperzero.one/ -[QRCode]: https://github.com/ricmoo/QRCode -[vCard]: https://www.evenx.com/vcard-3-0-format-specification -[qrcode repo]: https://github.com/bmatcuk/flipperzero-qrcode diff --git a/applications/Tools/qrcode/manifest.yml b/applications/Tools/qrcode/manifest.yml deleted file mode 100644 index fe6392f1..00000000 --- a/applications/Tools/qrcode/manifest.yml +++ /dev/null @@ -1,17 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/bmatcuk/flipperzero-qrcode.git - commit_sha: 64135f4d511be1b4acf633da08f2447758aa00a4 -short_description: Display qrcodes -description: | - # qrcode - Display qrcodes on the Flipper Zero - - See the documentation in the qrcode repo: https://github.com/bmatcuk/flipperzero-qrcode -changelog: | - v2: Multi-line qrcodes, manual mode selection, may set mode, version, and ecc in file. - v1: First release; may manually change qrcode version and ecc level. -screenshots: - - ss1.png - - ss2.png diff --git a/applications/Tools/qrcode_generator/README.md b/applications/Tools/qrcode_generator/README.md deleted file mode 100644 index 0da0228b..00000000 --- a/applications/Tools/qrcode_generator/README.md +++ /dev/null @@ -1,49 +0,0 @@ -# Flipper Zero: QRCode Generator -Generates and displays QRCodes on the flipper zero. - -## Download -Grab the `qrcode_generator.fap` from the latest release. - -## Installation -After the download copy the `.fap` file onto your flipper in the folder -`apps/Tools`. Then create in the `apps_data` folder the subfolder -`qrcode_generator` to open existing QRCodes or to save it on the sdcard. - -## Features -- Generating QRCodes based on the entered input -- Open QRCodes which are saved on the sdcard - -## Future Features -- [ ] Save newly generated QRCodes on the sdcard -- [ ] Export generated QRCodes as bitmap (.pbm image) - -## Data format -To generate newly QRCodes, you can just enter the data you want to stored -in the QRCode. - -To open saved QRCodes you need on a regular basis, just create a `.txt` file -in the `apps_data/qrcode_generator/` folder on the sdcard with just the -data in it. The app reads the content of the file and creates an QRCode with -it. You need no further specific format or something else. - -**Examples:** -```text -# Open new mail: -mailto:example@example.com - -# Open link: -https://github.com/qw3rtty - -# Connect to a WIFI: -WIFI:S:;P:;T:; -``` - -## Using the App -The app is acutally straightforward. If you start it, you have three menu -options. One to generate a new QRCode, one to open existing ones from the -sdcard and one to get the basic information about this app. - -## qrcode library -The application uses the awesome C library from [nayuki](https://github.com/nayuki/QR-Code-generator) -to generate and display the QRCodes. - diff --git a/applications/Tools/qrcode_generator/manifest.yml b/applications/Tools/qrcode_generator/manifest.yml deleted file mode 100644 index 54052584..00000000 --- a/applications/Tools/qrcode_generator/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/qw3rtty/flipperzero-qrcode-generator.git - commit_sha: c1d2591ef69e93eef5dc681ac3b5c1370c70a5d4 -description: "@./.catalog/README.md" -changelog: "@./.catalog/CHANGELOG.md" -screenshots: - - screenshots/Screenshot-menu.png - - screenshots/Screenshot-entered-text.png - - screenshots/Screenshot-saved-qrcodes.png - - screenshots/Screenshot-open-saved-qrcode.png diff --git a/applications/Tools/quac/README.md b/applications/Tools/quac/README.md deleted file mode 100644 index 43054e20..00000000 --- a/applications/Tools/quac/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![quac](https://catalog.flipperzero.one/application/quac/widget)](https://catalog.flipperzero.one/application/quac/page) \ No newline at end of file diff --git a/applications/Tools/quac/manifest.yml b/applications/Tools/quac/manifest.yml deleted file mode 100644 index 01d6ed04..00000000 --- a/applications/Tools/quac/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/rdefeo/quac.git - commit_sha: 5d7289aba21e5e74ce60d92490b7cb1ea053cd05 -changelog: "@./CHANGELOG.md" -description: "@./README_flipperlab.md" -author: "Roberto De Feo" -screenshots: - - "./screenshots/screenshot_1_orig.png" - - "./screenshots/screenshot_3_orig.png" - - "./screenshots/screenshot_2_orig.png" - - "./screenshots/screenshot_4_orig.png" diff --git a/applications/Tools/quadratic_solver/README.md b/applications/Tools/quadratic_solver/README.md deleted file mode 100644 index 2397b549..00000000 --- a/applications/Tools/quadratic_solver/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# What does this app do? - -This app takes a, b, and c values from a quadratic equation in form "ax^2 + bx + c = 0" - -# How to use? - -Select a number when hovering over a, b, or c with **LEFT** to decrease number, and **RIGHT** to increase. Press **OK** when selected values to solve the equation. Hover over "About" and press **RIGHT** to view additional information. diff --git a/applications/Tools/quadratic_solver/manifest.yml b/applications/Tools/quadratic_solver/manifest.yml deleted file mode 100644 index ea1aa89e..00000000 --- a/applications/Tools/quadratic_solver/manifest.yml +++ /dev/null @@ -1,19 +0,0 @@ -author: '@paul-sopin' -category: 'Tools' -description: '@README.md' -changelog: '@changelog.md' -icon: 'quadratic_solver.png' -id: 'quadratic_solver' -name: 'Quadratic Solver' -screenshots: - - 'screenshots/screenshot_1.png' - - 'screenshots/screenshot_2.png' - - 'screenshots/screenshot_3.png' -short_description: 'A simple quadratic equation solver app' -sourcecode: - location: - commit_sha: 6bb4b232bdaaa5a4ad0e3ec775b418b5a4cb7291 - origin: https://github.com/paul-sopin/flipper-quadratic-solver.git - subdir: - type: git -version: 0.1 diff --git a/applications/Tools/resistors/README.md b/applications/Tools/resistors/README.md deleted file mode 100644 index 7eea6209..00000000 --- a/applications/Tools/resistors/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![resistors](https://catalog.flipperzero.one/application/resistors/widget)](https://catalog.flipperzero.one/application/resistors/page) \ No newline at end of file diff --git a/applications/Tools/resistors/manifest.yml b/applications/Tools/resistors/manifest.yml deleted file mode 100644 index 0d70af25..00000000 --- a/applications/Tools/resistors/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: apps_source_code/resistors -description: "Resistor calculations" -changelog: "v1.1 - Initial release, v1.2 - Sync Updates, v1.3 - Sync updates and latest API support, v1.4 - Sync with latest version" -author: "Lewis Westbury" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/Tools/roman_decoder/README.md b/applications/Tools/roman_decoder/README.md deleted file mode 100644 index 8f507593..00000000 --- a/applications/Tools/roman_decoder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![roman_decoder](https://catalog.flipperzero.one/application/roman_decoder/widget)](https://catalog.flipperzero.one/application/roman_decoder/page) \ No newline at end of file diff --git a/applications/Tools/roman_decoder/manifest.yml b/applications/Tools/roman_decoder/manifest.yml deleted file mode 100644 index 96580125..00000000 --- a/applications/Tools/roman_decoder/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/evillero/roman_decoder - commit_sha: b83e96e71a8db5d5fb5bbb8bb173444d75661ad3 -description: "@.catalog/README.md" -changelog: "@.catalog/CHANGELOG.md" -author: "@evillero" -screenshots: - - ".catalog/screenshots/screenshot1.png" - - ".catalog/screenshots/screenshot2.png" diff --git a/applications/Tools/rot13_app/README.md b/applications/Tools/rot13_app/README.md deleted file mode 100644 index 291ad135..00000000 --- a/applications/Tools/rot13_app/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![rot13_app](https://catalog.flipperzero.one/application/rot13_app/widget)](https://catalog.flipperzero.one/application/rot13_app/page) \ No newline at end of file diff --git a/applications/Tools/rot13_app/manifest.yml b/applications/Tools/rot13_app/manifest.yml deleted file mode 100644 index 0f7938b6..00000000 --- a/applications/Tools/rot13_app/manifest.yml +++ /dev/null @@ -1,15 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/nothingbutlucas/flipperzero_rot13.git - commit_sha: ec52397333d61d4f35fe53801731e0dd832d5db5 -short_description: Cipher text with ROT13 -description: "@README.md" -changelog: "@./docs/CHANGELOG.md" -screenshots: - - screenshots/screenshot_00.png - - screenshots/screenshot_01.png - - screenshots/screenshot_02.png - - screenshots/screenshot_03.png - - screenshots/screenshot_04.png - - screenshots/screenshot_05.png diff --git a/applications/Tools/segment_clock/README.md b/applications/Tools/segment_clock/README.md deleted file mode 100644 index 1dfb17bd..00000000 --- a/applications/Tools/segment_clock/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![segment_clock](https://catalog.flipperzero.one/application/segment_clock/widget)](https://catalog.flipperzero.one/application/segment_clock/page) \ No newline at end of file diff --git a/applications/Tools/segment_clock/manifest.yml b/applications/Tools/segment_clock/manifest.yml deleted file mode 100644 index 373f66f2..00000000 --- a/applications/Tools/segment_clock/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: a2004a3539c50ced20f6f24e61ba17c1dd86460b - subdir: apps_source_code/segment_clock -description: "@./catalog/docs/Readme.md" -changelog: "@./catalog/docs/Changelog.md" -screenshots: - - "./catalog/screenshots/1.png" - diff --git a/applications/Tools/smack_my_dolphin_up/README.md b/applications/Tools/smack_my_dolphin_up/README.md deleted file mode 100644 index 3d07104f..00000000 --- a/applications/Tools/smack_my_dolphin_up/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![smack_my_dolphin_up](https://catalog.flipperzero.one/application/smack_my_dolphin_up/widget)](https://catalog.flipperzero.one/application/smack_my_dolphin_up/page) \ No newline at end of file diff --git a/applications/Tools/smack_my_dolphin_up/manifest.yml b/applications/Tools/smack_my_dolphin_up/manifest.yml deleted file mode 100644 index 12578446..00000000 --- a/applications/Tools/smack_my_dolphin_up/manifest.yml +++ /dev/null @@ -1,10 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/siberianbot/smack-my-dolphin-up.git - commit_sha: 71400765c08407d6a51072eab1d48359e2f0bafd -description: "@README.md" -changelog: "v1.0 - Initial release" -author: "siberianbot" -screenshots: - - "screenshot.png" \ No newline at end of file diff --git a/applications/Tools/tasks/README.md b/applications/Tools/tasks/README.md deleted file mode 100644 index cf3267bf..00000000 --- a/applications/Tools/tasks/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![tasks](https://catalog.flipperzero.one/application/tasks/widget)](https://catalog.flipperzero.one/application/tasks/page) \ No newline at end of file diff --git a/applications/Tools/tasks/manifest.yml b/applications/Tools/tasks/manifest.yml deleted file mode 100644 index de205df1..00000000 --- a/applications/Tools/tasks/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: "https://github.com/MadLadSquad/FlipperTasks.git" - commit_sha: "78d77f953757c23edbdf5c68ee8487e479610fcc" -description: "A simple to-do application." -changelog: "v1.0 - Initial release, v1.1 - Minor refactor, v1.2 - Bump framework version" -screenshots: - - "showcase/flipper1.png" - - "showcase/flipper2.png" - - "showcase/flipper3.png" - - "showcase/flipper4.png" diff --git a/applications/Tools/techart_calendar/README.md b/applications/Tools/techart_calendar/README.md deleted file mode 100644 index fd86c687..00000000 --- a/applications/Tools/techart_calendar/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![techart_calendar](https://catalog.flipperzero.one/application/techart_calendar/widget)](https://catalog.flipperzero.one/application/techart_calendar/page) \ No newline at end of file diff --git a/applications/Tools/techart_calendar/manifest.yml b/applications/Tools/techart_calendar/manifest.yml deleted file mode 100644 index c2d03d34..00000000 --- a/applications/Tools/techart_calendar/manifest.yml +++ /dev/null @@ -1,10 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/techartdev/Calendar - commit_sha: 3f29994837002986dbf9afc117338d5ee633c1ee -short_description: Calendar application -description: "Simple Calendar App for Flipper Zero" -changelog: "v1.0 - Initial Release, v1.1 - Framework update" -screenshots: - - screenshots/ss0.png diff --git a/applications/Tools/text_viewer/README.md b/applications/Tools/text_viewer/README.md deleted file mode 100644 index a92764a3..00000000 --- a/applications/Tools/text_viewer/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![text_viewer](https://catalog.flipperzero.one/application/text_viewer/widget)](https://catalog.flipperzero.one/application/text_viewer/page) \ No newline at end of file diff --git a/applications/Tools/text_viewer/manifest.yml b/applications/Tools/text_viewer/manifest.yml deleted file mode 100644 index 336699f2..00000000 --- a/applications/Tools/text_viewer/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: 1066d17ad1e8fbf75cea5c6612d79ba539ec8a33 - subdir: base_pack/text_viewer -description: "Text viewer application (Update!)" -changelog: "v1.0 - New Initial release, v1.5 - Sync Updates, v1.6 - Sync updates and latest API support, v1.7 - Sync with latest version" -author: "@Willy-JL (Original by @kowalski7cc & @kyhwana)" -screenshots: - - "./img/2.png" - - "./img/1.png" diff --git a/applications/Tools/theme_manager/manifest.yml b/applications/Tools/theme_manager/manifest.yml deleted file mode 100644 index f5ff4f58..00000000 --- a/applications/Tools/theme_manager/manifest.yml +++ /dev/null @@ -1,20 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Hoasker/flipper-theme-manager.git - commit_sha: 3587d19e064f93c691f3ba185f3b3321fd40116a -short_description: Manage dolphin animation themes from SD card -description: "@description.md" -changelog: "@changelog.md" -screenshots: - - screenshots/1.png - - screenshots/2.png - - screenshots/3.png - - screenshots/4.png - - screenshots/5.png - - screenshots/6.png - - screenshots/7.png - - screenshots/8.png - - screenshots/9.png - - screenshots/10.png - - screenshots/11.png \ No newline at end of file diff --git a/applications/Tools/tone_gen/README.md b/applications/Tools/tone_gen/README.md deleted file mode 100644 index 90a7a6f3..00000000 --- a/applications/Tools/tone_gen/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![tone_gen](https://catalog.flipperzero.one/application/tone_gen/widget)](https://catalog.flipperzero.one/application/tone_gen/page) \ No newline at end of file diff --git a/applications/Tools/tone_gen/manifest.yml b/applications/Tools/tone_gen/manifest.yml deleted file mode 100644 index d3bfcf83..00000000 --- a/applications/Tools/tone_gen/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/GEMISIS/tone_gen.git - commit_sha: 6dc1a236fe0c395261b9edbfb594d61352355c16 -description: "Generate simple tones on your Flipper Zero" -changelog: "v1.0 - Initial release" -author: "@gemisis" -screenshots: - - "./screenshots/menu.png" - - "./screenshots/settings.png" - - "./screenshots/playback.png" diff --git a/applications/Tools/totp/README.md b/applications/Tools/totp/README.md deleted file mode 100644 index 0d04d70d..00000000 --- a/applications/Tools/totp/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![totp](https://catalog.flipperzero.one/application/totp/widget)](https://catalog.flipperzero.one/application/totp/page) \ No newline at end of file diff --git a/applications/Tools/totp/manifest.yml b/applications/Tools/totp/manifest.yml deleted file mode 100644 index e72c095a..00000000 --- a/applications/Tools/totp/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/akopachov/flipper-zero_authenticator.git - commit_sha: 56227a6378b709a1d9f6778d66a40bb9a35a1f73 - subdir: totp -description: "@.ofwcatalog/DESCRIPTION.md" -changelog: "@.ofwcatalog/CHANGELOG.md" -screenshots: - - ".ofwcatalog/screenshot_1.png" - - ".ofwcatalog/screenshot_2.png" - - ".ofwcatalog/screenshot_3.png" - - ".ofwcatalog/screenshot_4.png" - - ".ofwcatalog/screenshot_5.png" \ No newline at end of file diff --git a/applications/Tools/trackerflipx/README.md b/applications/Tools/trackerflipx/README.md deleted file mode 100644 index a3e26d59..00000000 --- a/applications/Tools/trackerflipx/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![trackerflipx](https://catalog.flipperzero.one/application/trackerflipx/widget)](https://catalog.flipperzero.one/application/trackerflipx/page) \ No newline at end of file diff --git a/applications/Tools/trackerflipx/manifest.yml b/applications/Tools/trackerflipx/manifest.yml deleted file mode 100644 index 81718dc9..00000000 --- a/applications/Tools/trackerflipx/manifest.yml +++ /dev/null @@ -1,29 +0,0 @@ -## This is a sample manifest file for the Flipper Zero app catalog. -## Create one for your app in a corresponding directory in the 'applications' folder. - -sourcecode: - type: git - location: - ## Specify the git URL of your repository here - origin: https://github.com/MassivDash/flipper-tracker.git - ## Put the fill commit SHA of the commit with the app's code you want to submit - commit_sha: fdd6b7d4ec6aabb71cef6e919061a59c88d29844 - ## If your app is located in a subdirectory of the repository, specify it here - # subdir: . -## If applicaion.fam contains 'fap_descriptiopn', it will be used as a short description -# short_description: A short app description. -## For description and changelog you can use limited markdown syntax. -## you can also specify a file from your app's repository as a source with @ -version: 1.1 -description: | - Flipper Time Tracker is an application for flipperzero device that allows the user to track multiple tasks at the same time. -author: "@MassivDash (https://spaceout.pl)" -changelog: "@CHANGELOG.md" -## Unmodified screenshots from qFlipper -screenshots: - - screenshots/flipper-time-tracker-screenshot-1.png - - screenshots/flipper-time-tracker-screenshot-2.png - - screenshots/flipper-time-tracker-screenshot-3.png - - screenshots/flipper-time-tracker-screenshot-4.png - - screenshots/flipper-time-tracker-screenshot-5.png - - screenshots/flipper-time-tracker-screenshot-6.png diff --git a/applications/Tools/tree_ident/manifest.yml b/applications/Tools/tree_ident/manifest.yml deleted file mode 100644 index 51b4733f..00000000 --- a/applications/Tools/tree_ident/manifest.yml +++ /dev/null @@ -1,24 +0,0 @@ -sourcecode: - type: git - location: - ## Specify the git URL of your repository - origin: https://github.com/fgreil/mitzi-tree-ident.git - ## Put the full commit SHA of the commit with the app's code you want to submit - commit_sha: 85c5631f4650b4d5f7690a109f7d9eb6f8845b08 - ## (Optional) If your app is located in a subdirectory of the repository, specify it here - # subdir: . -## My application.fam contains 'fap_description', hope it will be used as a short description -# short_description: A short app description. -## For 'description' and 'changelog', you can use limited markdown syntax -## You can also specify a file from your app's repository as a source with @ -description: | - The app helps users identify trees through a series of guided questions. - It uses a decision-tree approach to narrow down possible tree species based on observable features. -changelog: "@changelog.md" -## Unmodified screenshots from qFlipper -screenshots: - - screenshots/SplashScreen.png - - screenshots/QuestionL1.png - - screenshots/QuestionL2Leaves.png - - screenshots/QuestionL3Leaflets.png - - screenshots/AnswerOddPinnateLeaves.png diff --git a/applications/Tools/upython/README.md b/applications/Tools/upython/README.md deleted file mode 100644 index 0861bcaa..00000000 --- a/applications/Tools/upython/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# uPython - -MicroPython support for the Flipper Zero. See [repository on GitHub](https://github.com/ofabel/mp-flipper) for details. diff --git a/applications/Tools/upython/manifest.yml b/applications/Tools/upython/manifest.yml deleted file mode 100644 index 569a43eb..00000000 --- a/applications/Tools/upython/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/ofabel/mp-flipper.git - commit_sha: 602080eca907cad035f570541384137d786ad52a -description: "@./docs/README.md" -changelog: "@./docs/CHANGELOG.md" -screenshots: - - docs/welcome.png - - docs/file-browser.png - - docs/tic-tac-toe.png diff --git a/applications/Tools/video_game_module_tool/README.md b/applications/Tools/video_game_module_tool/README.md deleted file mode 100644 index e93c6293..00000000 --- a/applications/Tools/video_game_module_tool/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![video_game_module_tool](https://catalog.flipperzero.one/application/video_game_module_tool/widget)](https://catalog.flipperzero.one/application/video_game_module_tool/page) diff --git a/applications/Tools/video_game_module_tool/manifest.yml b/applications/Tools/video_game_module_tool/manifest.yml deleted file mode 100644 index 73558c16..00000000 --- a/applications/Tools/video_game_module_tool/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/flipperdevices/flipperzero-good-faps.git - commit_sha: b791dea234f855155027bb46215dc60f3ddeb243 - subdir: video_game_module_tool -description: "@.catalog/README.md" -changelog: "@.catalog/CHANGELOG.md" -author: "@gsurkov" -screenshots: - - ".catalog/screenshots/1.png" - - ".catalog/screenshots/2.png" - - ".catalog/screenshots/3.png" diff --git a/applications/Tools/vin_decoder/README.md b/applications/Tools/vin_decoder/README.md deleted file mode 100644 index c4ecf90e..00000000 --- a/applications/Tools/vin_decoder/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![vin_decoder](https://catalog.flipperzero.one/application/vin_decoder/widget)](https://catalog.flipperzero.one/application/vin_decoder/page) \ No newline at end of file diff --git a/applications/Tools/vin_decoder/manifest.yml b/applications/Tools/vin_decoder/manifest.yml deleted file mode 100644 index 5785e9d4..00000000 --- a/applications/Tools/vin_decoder/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/evillero/vin_decoder - commit_sha: d0dbc90176e053185d89fab771e5ca754e4db12a -description: "@.catalog/README.md" -changelog: "@.catalog/CHANGELOG.md" -author: "@evillero" -screenshots: - - ".catalog/screenshots/Screenshot1.png" - - ".catalog/screenshots/Screenshot2.png" - diff --git a/applications/Tools/voltcalc_app/README.md b/applications/Tools/voltcalc_app/README.md deleted file mode 100644 index f38a5718..00000000 --- a/applications/Tools/voltcalc_app/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![voltcalc_app](https://catalog.flipperzero.one/application/voltcalc_app/widget)](https://catalog.flipperzero.one/application/voltcalc_app/page) \ No newline at end of file diff --git a/applications/Tools/voltcalc_app/manifest.yml b/applications/Tools/voltcalc_app/manifest.yml deleted file mode 100644 index 34e8799d..00000000 --- a/applications/Tools/voltcalc_app/manifest.yml +++ /dev/null @@ -1,15 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/HappyAmos/Flipper_FAPS.git - commit_sha: 258177423e97997a72c794d591613cc2c5b27330 - subdir: voltcalc_app -description: "@README-catalog.md" -short_description: "A simple Ohms Law calculator" -changelog: "@changelog.md" -author: "@HappyAmos" -screenshots: - - "./screenshots/vri1.png" - - "./screenshots/vri2.png" - - "./screenshots/vri3.png" - - "./screenshots/vri4.png" diff --git a/applications/Tools/wch_swio_flasher/README.md b/applications/Tools/wch_swio_flasher/README.md deleted file mode 100644 index 0cb6b79f..00000000 --- a/applications/Tools/wch_swio_flasher/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![wch_swio_flasher](https://catalog.flipperzero.one/application/wch_swio_flasher/widget)](https://catalog.flipperzero.one/application/wch_swio_flasher/page) \ No newline at end of file diff --git a/applications/Tools/wch_swio_flasher/manifest.yml b/applications/Tools/wch_swio_flasher/manifest.yml deleted file mode 100644 index 9e839e88..00000000 --- a/applications/Tools/wch_swio_flasher/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/sukvojte/wch_swio_flasher.git - commit_sha: 75266a7da1ceb3283321827cea8666421bf3a075 -description: "Flipper Zero WCH SWIO Flasher and debugger" -changelog: "v1.1 - Main app release" -author: "Vojtech Suk" -screenshots: - - "./screenshots/wchf_debug.png" - - "./screenshots/wchf_get_chip_info.png" - - "./screenshots/wchf_wiring.png" diff --git a/applications/USB/.gitkeep b/applications/USB/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/applications/USB/bc_scanner/README.md b/applications/USB/bc_scanner/README.md deleted file mode 100644 index 68fcc383..00000000 --- a/applications/USB/bc_scanner/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![bc_scanner](https://catalog.flipperzero.one/application/bc_scanner/widget)](https://catalog.flipperzero.one/application/bc_scanner/page) \ No newline at end of file diff --git a/applications/USB/bc_scanner/manifest.yml b/applications/USB/bc_scanner/manifest.yml deleted file mode 100644 index 5cab5e58..00000000 --- a/applications/USB/bc_scanner/manifest.yml +++ /dev/null @@ -1,14 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/polarikus/flipper-zero_bc_scanner_emulator.git - commit_sha: 94a401bbe3d5d8c60ac25c5b7ab71c843f35945e -short_description: "Emulates a barcode scanner for testing cash registers. Why buy a scanner when you have a flipper?" -description: "@./.catalog/README.md" -changelog: "@./.catalog/CHANGELOG.md" -screenshots: - - "./.catalog/screenshots/AppIcon.png" - - "./.catalog/screenshots/BcFilemanage.png" - - "./.catalog/screenshots/BcRun.png" - - "./.catalog/screenshots/ScreeenBC.png" - - "./.catalog/screenshots/BcDone.png" diff --git a/applications/USB/flip_tdi/README.md b/applications/USB/flip_tdi/README.md deleted file mode 100644 index cfca5b2d..00000000 --- a/applications/USB/flip_tdi/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![flip_tdi](https://catalog.flipperzero.one/application/flip_tdi/widget)](https://catalog.flipperzero.one/application/flip_tdi/page) \ No newline at end of file diff --git a/applications/USB/flip_tdi/manifest.yml b/applications/USB/flip_tdi/manifest.yml deleted file mode 100644 index af31ffd9..00000000 --- a/applications/USB/flip_tdi/manifest.yml +++ /dev/null @@ -1,15 +0,0 @@ -author: 'SkorP' -category: 'USB' -changelog: "@.catalog/changelog.md" -description: "@.catalog/README.md" -screenshots: - - ".catalog/screenshots/1.png" - - ".catalog/screenshots/2.png" - - ".catalog/screenshots/3.png" -sourcecode: - type: git - location: - origin: https://github.com/flipperdevices/flipperzero-good-faps.git - commit_sha: be5b1036d69fbdd1c0c1edb05e14f1e3aee9653c - subdir: flip_tdi -version: 1.0 diff --git a/applications/USB/hid_usb/README.md b/applications/USB/hid_usb/README.md deleted file mode 100644 index 7ef3dc24..00000000 --- a/applications/USB/hid_usb/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# HID App - -This is a standalone version of the HID app Momentum. Thankfully, that project is GPL, so this one is as well. - -## Functionality - -* Keynote - Remote for presentations -* Keynote Vertical - Alternate remote for presentations -* Keyboard - A functional keyboard, including modifier keys -* Numpad - Number pad -* Media - Media controls -* Apple Music macOS - Alternate music controls -* Movie - Media controls for watching a movie -* Mouse - Move the cursor and send clicks -* TikTok / YT Shorts - Specialized controls for short-form videos -* Mouse Clicker - Repeatedly click the mouse after a delay -* Mouse Jiggler - Moves the mouse every few seconds -* Mouse Jiggler Stealth - Moves the mouse a random direction and distance after a random time period -* PushToTalk - Controls to unmute your microphone with various services diff --git a/applications/USB/hid_usb/manifest.yml b/applications/USB/hid_usb/manifest.yml deleted file mode 100644 index 18d140bc..00000000 --- a/applications/USB/hid_usb/manifest.yml +++ /dev/null @@ -1,24 +0,0 @@ -id: hid_usb -author: Momentum Team -sourcecode: - type: git - location: - origin: https://github.com/fidian/flipper-hid-app.git - ## Put the full commit SHA of the commit with the app's code you want to submit - commit_sha: f4a4c3e663838a2f1363f638b3366d4e03b78d79 -description: "@README.md" -changelog: "@CHANGELOG.md" -screenshots: - - screenshots/main-menu.png - - screenshots/keynote.png - - screenshots/keyboard.png - - screenshots/media.png - - screenshots/apple-music-macos.png - - screenshots/movie.png - - screenshots/mouse.png - - screenshots/tiktoc-yt-shorts.png - - screenshots/mouse-clicker.png - - screenshots/mouse-jiggler.png - - screenshots/mouse-jiggler-stealth.png - - screenshots/push-to-talk-1.png - - screenshots/push-to-talk-2.png diff --git a/applications/USB/ldtoypad/README.md b/applications/USB/ldtoypad/README.md deleted file mode 100644 index 99ce4eda..00000000 --- a/applications/USB/ldtoypad/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![ldtoypad](https://catalog.flipperzero.one/application/ldtoypad/widget)](https://catalog.flipperzero.one/application/ldtoypad/page) \ No newline at end of file diff --git a/applications/USB/ldtoypad/manifest.yml b/applications/USB/ldtoypad/manifest.yml deleted file mode 100644 index d0ff61f4..00000000 --- a/applications/USB/ldtoypad/manifest.yml +++ /dev/null @@ -1,15 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/SegerEnd/Flipper-Zero-LD-Toypad-Emulator.git - commit_sha: 96b59320271db9f92c86d3e0954b53369dd72b0a -short_description: Toy Pad emulator for Lego Dimensions via USB -description: | - Use your Flipper as a ToyPad!! - This app emulates the behavior of the original USB ToyPad. - Allowing you to place characters, vehicles all directly from your Flipper! -changelog: "@CHANGELOG.md" -screenshots: - - screenshots/toypad.png - - screenshots/selectionmenu.png - - screenshots/minfigs.png diff --git a/applications/USB/mass_storage/README.md b/applications/USB/mass_storage/README.md deleted file mode 100644 index 466505ce..00000000 --- a/applications/USB/mass_storage/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![mass_storage](https://catalog.flipperzero.one/application/mass_storage/widget)](https://catalog.flipperzero.one/application/mass_storage/page) \ No newline at end of file diff --git a/applications/USB/mass_storage/manifest.yml b/applications/USB/mass_storage/manifest.yml deleted file mode 100644 index 32782db1..00000000 --- a/applications/USB/mass_storage/manifest.yml +++ /dev/null @@ -1,12 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/flipperdevices/flipperzero-good-faps.git - commit_sha: b791dea234f855155027bb46215dc60f3ddeb243 - subdir: mass_storage -description: "@.catalog/README.md" -changelog: "@.catalog/CHANGELOG.md" -author: "@nminaylov @kevinwallace" -screenshots: - - ".catalog/screenshots/1.png" - - ".catalog/screenshots/2.png" diff --git a/applications/USB/mouse_jiggler/README.md b/applications/USB/mouse_jiggler/README.md deleted file mode 100644 index 74327592..00000000 --- a/applications/USB/mouse_jiggler/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Mouse Jiggler for Flipper Zero -This simple application is a fork of Matthew Willard's [flipper-mouse-jiggler](https://github.com/matthewwwillard/flipper-mouse-jiggler). Unlike other mouse jiggler implementations for the Flipper Zero, this one introduces an element of randomness to the movement patterns instead of performing a simple back-and-forth cycle. - -**WARNING: Do not use this application to interact with a system that you do not own unless you have explicitly been granted permission to do so. If you choose to use this application in an unauthorized manner, I am not responsible for the consequences you may face.** - -## Installing -1. Download the FAP file from the [release page](https://github.com/DavidBerdik/flipper-mouse-jiggler/releases). -2. Copy the FAP file to your Flipper. The easiest way to do this is by using the [qFlipper desktop application](https://flipperzero.one/downloads). The recommended storage location for this application is 'SD Card/apps/USB/'. -3. On your Flipper, navigate to 'Apps > USB > Mouse Jiggler' and launch the application. -4. Plug your Flipper in to a computer using a USB cable. While the application is running, the Flipper will present itself to the computer as a mouse and send arbitrary movement instructions to the system. - -## Building -1. Clone this repository. -2. [Install uFBT.](https://github.com/flipperdevices/flipperzero-ufbt) -3. Using a command line, navigate to this repository's directory and execute the following command: 'ufbt faps' -4. Once the build completes, a 'dist' folder will be created. This folder will contain the compiled FAP file. -5. You can run the compiled FAP file by manually copying it to your Flipper as described above or by executing the following command: 'ufbt launch' diff --git a/applications/USB/mouse_jiggler/manifest.yml b/applications/USB/mouse_jiggler/manifest.yml deleted file mode 100644 index f9806bd2..00000000 --- a/applications/USB/mouse_jiggler/manifest.yml +++ /dev/null @@ -1,10 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/DavidBerdik/flipper-mouse-jiggler.git - commit_sha: 17d839dae86be76d073dadff5121b7412c175132 -short_description: A simple mouse jiggler for the Flipper Zero -description: "@README.md" -changelog: "@CHANGELOG.md" -screenshots: - - images/screenshot.png diff --git a/applications/USB/pc_monitor_usb/manifest.yml b/applications/USB/pc_monitor_usb/manifest.yml deleted file mode 100644 index 7d3381fd..00000000 --- a/applications/USB/pc_monitor_usb/manifest.yml +++ /dev/null @@ -1,15 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/DonJulve/Flipper-Zero-PC-Monitor-USB - commit_sha: "66100de81ee8baed0d77ade915df2b9b4dc979e3" -short_description: "Application for monitoring PC resources via USB" -description: | - Flipper Application for monitoring PC resources via USB (Virtual COM Port). - This is a ported version of the original (https://github.com/TheSainEyereg/flipper-pc-monitor) application to work over USB instead of Bluetooth. - - See full readme: https://github.com/DonJulve/Networking_NFC_QR_Flipper_Zero/blob/main/README_en.md -changelog: "@.catalog/changelog.md" -screenshots: - - .catalog/screenshots/bars.png - - .catalog/screenshots/QR.png diff --git a/applications/USB/portal_of_flipper/README.md b/applications/USB/portal_of_flipper/README.md deleted file mode 100644 index 371c38b0..00000000 --- a/applications/USB/portal_of_flipper/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![portal_of_flipper](https://catalog.flipperzero.one/application/portal_of_flipper/widget)](https://catalog.flipperzero.one/application/portal_of_flipper/page) \ No newline at end of file diff --git a/applications/USB/portal_of_flipper/manifest.yml b/applications/USB/portal_of_flipper/manifest.yml deleted file mode 100644 index 77212560..00000000 --- a/applications/USB/portal_of_flipper/manifest.yml +++ /dev/null @@ -1,10 +0,0 @@ -changelog: "@CHANGELOG.md" -description: "@README.md" -screenshots: - - ".catalog/screenshots/empty.png" - - ".catalog/screenshots/figure.png" -sourcecode: - type: git - location: - origin: https://github.com/sanjay900/portal_of_flipper.git - commit_sha: cfc775efe510e0a4e8b259c35514f0a584a4c005 diff --git a/applications/USB/usb_ccb/README.md b/applications/USB/usb_ccb/README.md deleted file mode 100644 index 6d7f4c24..00000000 --- a/applications/USB/usb_ccb/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![usb_ccb](https://catalog.flipperzero.one/application/usb_ccb/widget)](https://catalog.flipperzero.one/application/usb_ccb/page) \ No newline at end of file diff --git a/applications/USB/usb_ccb/manifest.yml b/applications/USB/usb_ccb/manifest.yml deleted file mode 100644 index ea4cab28..00000000 --- a/applications/USB/usb_ccb/manifest.yml +++ /dev/null @@ -1,10 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/WithSecureLabs/usb-consumer-control - commit_sha: a8f46f7af6d1563243f3f847d2aa933524a17636 -description: "@README.md" -changelog: "@./docs/changelog.md" -screenshots: - - "./screenshots/1.png" - - "./screenshots/2.png" diff --git a/applications/USB/usb_hid_autofire/README.md b/applications/USB/usb_hid_autofire/README.md deleted file mode 100644 index 63be11ed..00000000 --- a/applications/USB/usb_hid_autofire/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![usb_hid_autofire](https://catalog.flipperzero.one/application/usb_hid_autofire/widget)](https://catalog.flipperzero.one/application/usb_hid_autofire/page) \ No newline at end of file diff --git a/applications/USB/usb_hid_autofire/manifest.yml b/applications/USB/usb_hid_autofire/manifest.yml deleted file mode 100644 index b35467e7..00000000 --- a/applications/USB/usb_hid_autofire/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/xMasterX/all-the-plugins.git - commit_sha: a2004a3539c50ced20f6f24e61ba17c1dd86460b - subdir: apps_source_code/usb_hid_autofire -description: "@./catalog/docs/Readme.md" -changelog: "@./catalog/docs/Changelog.md" -screenshots: - - "./catalog/screenshots/1.png" - diff --git a/applications/USB/xinput_controller/README.md b/applications/USB/xinput_controller/README.md deleted file mode 100644 index f14432c4..00000000 --- a/applications/USB/xinput_controller/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![xinput_controller](https://catalog.flipperzero.one/application/xinput_controller/widget)](https://catalog.flipperzero.one/application/xinput_controller/page) \ No newline at end of file diff --git a/applications/USB/xinput_controller/manifest.yml b/applications/USB/xinput_controller/manifest.yml deleted file mode 100644 index d2cc7796..00000000 --- a/applications/USB/xinput_controller/manifest.yml +++ /dev/null @@ -1,11 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/expected-ingot/flipper-xinput.git - commit_sha: 48b3b146edc0de2f0e6cf0b0f23463fc3f3f8b3f -short_description: An app that emulates XInput controllers -description: "@README.md" -changelog: "@./docs/changelog.md" -screenshots: - - screenshots/ss0.png - - screenshots/ss1.png \ No newline at end of file diff --git a/applications/iButton/.gitkeep b/applications/iButton/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/applications/iButton/fuzzer_ibtn/README.md b/applications/iButton/fuzzer_ibtn/README.md deleted file mode 100644 index e9c11c3e..00000000 --- a/applications/iButton/fuzzer_ibtn/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Status - -[![fuzzer_ibtn](https://catalog.flipperzero.one/application/fuzzer_ibtn/widget)](https://catalog.flipperzero.one/application/fuzzer_ibtn/page) \ No newline at end of file diff --git a/applications/iButton/fuzzer_ibtn/manifest.yml b/applications/iButton/fuzzer_ibtn/manifest.yml deleted file mode 100644 index 30220722..00000000 --- a/applications/iButton/fuzzer_ibtn/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/DarkFlippers/Multi_Fuzzer.git - commit_sha: 2ecfcd857da54b7a08014d14d7b46eb235b72695 -id: "fuzzer_ibtn" -description: "@./catalog/docs/ibtn/README.md" -changelog: "@./catalog/docs/ibtn/Changelog.md" -screenshots: - - "./catalog/screenshots/Main_menu.png" - - "./catalog/screenshots/Attack_screen.png" - - "./catalog/screenshots/Pause.png" - - "./catalog/screenshots/Field_editor.png" \ No newline at end of file diff --git a/applications/iButton/ibutton_converter/manifest.yml b/applications/iButton/ibutton_converter/manifest.yml deleted file mode 100644 index cc0b73cf..00000000 --- a/applications/iButton/ibutton_converter/manifest.yml +++ /dev/null @@ -1,13 +0,0 @@ -sourcecode: - type: git - location: - origin: https://github.com/Leptopt1los/ibutton_converter.git - commit_sha: 9d191d71f2811d928625900de36de914071b3d6d -description: "@README.md" -changelog: "@.catalog/CHANGELOG.md" -screenshots: - - ".catalog/screenshots/main_menu_options.png" - - ".catalog/screenshots/key_select.png" - - ".catalog/screenshots/metakom_convert_options.png" - - ".catalog/screenshots/cyfral_convert_options.png" - - ".catalog/screenshots/save_success.png" diff --git a/documentation/Contributing.md b/documentation/Contributing.md deleted file mode 100644 index 82938cb8..00000000 --- a/documentation/Contributing.md +++ /dev/null @@ -1,81 +0,0 @@ -# Apps Catalog: Contribution Guide - -Thank you for your interest in contributing to the Flipper Apps Catalog, a place where people can discover, download, and share community developed apps for Flipper Zero. - -In this guide, you will learn how to use this repository to publish and update your apps in the Apps Catalog. - -## General terms and requirements - - 1. **Open Source License**. Apps submitted to this repository must be licensed under an Open Source License of your choice, permitting building and distribution of the app in binary form by the Flipper Apps Catalog's infrastructure. - 2. **No infringement on rights or trademarks**. Apps and data they produce or process must not infringe on any third-party rights or trademarks. - 3. **No malicious code**. Submitted apps must not contain any malicious code or code that may cause harm to the user's device or data. - 4. **No illegal activity**. Apps must not bypass Flipper Zero's intentional limits. Sharing links, instructions, or encouragement for firmware forks with illegal features or illegal activities is prohibited. - 5. **Compliance with UGC Policies**. Apps must comply with the User-Generated Content Policies of [Play Store](https://support.google.com/googleplay/android-developer/answer/9876937) and [App Store](https://developer.apple.com/app-store/review/guidelines/#user-generated-content). We reserve the right to reject and remove apps that do not comply with these policies. - 6. **App metadata or source code updates**. If any changes to the app metadata or source code are required, we will contact the app author, as specified in the submitted pull request or using the contact information provided in the manifest file. If we do not receive a response within 14 days, the app will be removed from the Catalog. - 7. **Emergency app updates**. If immediate changes are required to address a security vulnerability, copyright or any other critical issue, we reserve the right to unpublish the app from the Catalog before contacting the author. - 8. **Reserved right to unpublish apps**. We reserve the right to reject and unpublish apps that do not comply with these terms and requirements, or for any other reason at any time. - - -## Publishing your app to the Apps Catalog - -The Flipper Apps Catalog repository doesn't host the app source code. It **only hosts** `manifest.yml` files with a link to the app source code repository and the app metadata. - -> [!NOTE] -> The app source code must be hosted in a public Git repository. We currently only accept apps hosted on GitHub. - -To publish your app to the Apps Catalog: -1. Prepare the app source code repository -2. Prepare metadata files and fill in the metadata fields -3. Create a pull request with the Apps Catalog Manifest file `manifest.yml` file in the Apps Catalog repository -4. Wait until your pull request is approved and merged - -Below, we discuss each step in more detail. - -### Step 1. Preparing the app source code repository - - 1. Ensure your app is buildable with [uFBT](https://pypi.org/project/ufbt/) and compatible with the latest Release or Release Candidate firmware version. - 2. Add an app icon to the repository (10x10px 1-bit .png file). - 3. Add app screenshots to the repository (take them using qFlipper and do not change their resolution or format). These screenshots will be displayed in the Apps Catalog, and the first screenshot will be shown in the App preview. - 4. Create a Markdown-formatted file `README.md` with additional information about your app. There, you can include instructions on how to use the app, necessary hardware add-ons, etc. This information will be displayed in the detailed description on the app page in the Apps Catalog. - 5. Create a Markdown-formatted file `changelog.md`. In it, describe changes with each new version of the app in the following format: - -``` -v0.2: -added images - -v0.1: -added changelog -``` - -### Step 2. Preparing metadata files - -1. Create `application.fam` (in your app's source code repo). You need to edit this manifest to specify several fields, such as `appid` (must be unique), `name`, `fap_category`, `fap_version`, etc. See [Flipper App Manifests (.fam)](https://developer.flipper.net/flipperzero/doxygen/app_manifests.html) for details and examples. -2. Commit the `application.fam` to your repository. -3. Create `manifest.yml` (you later need to add it to the Apps Catalog repo via pull request, see step 3). Fill in text files in it, including paths to additional files. In the `commit_sha` field of manifest.yml, specify commit ID from the source repository (after committing all files to the source repository). See [Manifest](./Manifest.md) for details. See also the [`manifest.yml` sample file](../example/manifest.yml). - -> [!NOTE] -> Please make sure your `manifest.yml` is valid as described [here](Manifest.md#validating-manifest). - -Info from these fields will later be shown in the Apps Catalog after your app is published. Here is what it's going to look like in the catalog interface: - -

App manifest fields shown in the catalog interface

- -### Step 3. Sending the pull request with manifest.yml to the Apps Catalog - - 1. Fork this repository and clone your fork to the local path. - 2. Create a new branch. The recommended naming scheme for your branch is the following: `/_`, where `username` is your GitHub username, `appid` is your app ID, and `appversion` is your app's version. - 3. In the new branch, add your `manifest.yml` file to the directory: `applications///`. Before adding it, remember to check its validity as described [here](./Manifest.md#validating-manifest). - 4. (Optional) Add a Markdown-formatted `README.md` file with additional information about your app to the same directory as `manifest.yml`. When the user clicks on the Manifest link on your published app page, they will access your app folder in the Apps Catalog repository, and this readme will be shown. - 5. Create a pull request from your local branch, filling in the pull request template. - -To learn more about contributing and forking on GitHub, see [Contributing to projects](https://docs.github.com/en/get-started/quickstart/contributing-to-projects). - -### Step 4. App moderation - -Once you submit your pull request, it will be moderated. Check out your GitHub notifications to follow the review process. If you receive any error notifications, please go to your PR page and find the review step that caused the issue for more details. If everything is formatted correctly and your app runs without errors, we'll usually accept your pull request within 1-2 business days. - -In a few minutes after your pull request is accepted, your app will be available in the Apps Catalog in [mobile apps](https://flpr.app/?ref=blog.flipper.net) and in [Flipper Lab](https://lab.flipper.net/apps). - -## Updating your app - -Updating an app is done in the same way as publishing your app to the Apps Catalog. Note that each submission must have a unique version. If you want to update an app, increment the version number in the `application.fam` file in the source code repo. See [Manifest format description](./Manifest.md#app-version) for details. \ No newline at end of file diff --git a/documentation/Manifest.md b/documentation/Manifest.md deleted file mode 100644 index f34a253f..00000000 --- a/documentation/Manifest.md +++ /dev/null @@ -1,154 +0,0 @@ -# App manifest - -Each app submitted to this catalog is defined by an app manifest file called `manifest.yml`. The app manifest is used by the bundler script to build the app package. The app package is then automatically uploaded to Flipper Application Archivarius, which manages app builds for various SDKs and devices. - -The app manifest must be placed in a corresponding subdirectory of the `applications` directory. The full path consists of the `applications` directory, [category name](#categories), app ID, and `manifest.yml` file. - -## Minimal manifest example - -Here is a minimal example of an app manifest. It is expected that some of the fields are specified in the `application.fam` file in the app's source code repository. Namely, `application.fam` should contain `name`, `appid` (set to "example_subghz_app"), `fap_category` (set to "Sub-GHz"), `fap_version`, `fap_author`, and `fap_icon` fields. - -The repositofy should also contain `README.md`, `docs/changelog.md` files , and `screenshots/ss0.png` files. - -See [Manifest structure](#manifest-structure) for more details on those fields. - -```yaml -sourcecode: - type: git - location: - origin: https://github.com/example/test.git - commit_sha: bf7019d16d7b50f6a98cc3abdac38c53952a4f30 -short_description: Test app -description: "@README.md" -changelog: "@./docs/changelog.md" -screenshots: - - screenshots/ss0.png -``` - -This manifest must be placed in the `applications/Sub-GHz/example_subghz_app/manifest.yml` file. - - -## Categories - -Your app must be placed in one of the following categories: - - - **Sub-GHz**: Apps that use Sub-GHz radio. - - **RFID**: Apps built for low-frequency RFID subsystem. - - **NFC**: Apps for NFC subsystem. - - **Infrared**: Infrared-related apps. - - **GPIO**: Apps utilizing GPIO pins. - - **iButton**: Apps that use iButton/OneWire subsystem. - - **USB**: USB-related apps. - - **Games**: Games. - - **Media**: Media apps. - - **Tools**: Utility apps. - - **Bluetooth**: Bluetooth LE apps. - - -## Manifest structure - -An app manifest is a YAML file that points to the app's source code and provides additional information about the app. Note that Required fields that are not specified in the manifest file must be specified in the `application.fam` file in the app's source code repository. - -| Field | Required? | Description | Corresponding field in `application.fam` | -| --- | --- | --- | --- | -| `sourcecode` | Yes | Source code location. See [Source code location](#source-code-location). | None | -| `screenshots` | Yes | A list of paths to screenshot images in app's source code repo. See [Screenshots](#screenshots). | None | -| `changelog` | Yes | App changelog. Supports Markdown formatting and file inclusion. [Details](#loading-values-from-files). | None | -| `short_description` | Yes | Short app description, plain text. | `fap_description` | -| `description` | Yes | App description. Supports limited Markdown. [Details](#loading-values-from-files). | None | -| `name` | Yes | App name. | `name` | -| `id` | Yes | App ID. A lowercase string with no spaces. Must be globally unique. | `appid` | -| `category` | Yes | App category. Must match manifest location within this repo. | `fap_category` | -| `version` | Yes | App version, in format "major.minor". | `fap_version` | -| `author` | No | App author. | `fap_author` | -| `icon` | No | App icon. Must be 10x10px 1-bit .png file. | `fap_icon` | -| `targets` | No | A list of targets this app supports. See [documentation on FAM App Manifests](https://developer.flipper.net/flipperzero/doxygen/app_manifests.html) for more. By default - includes all targets. | `targets` | - -**It is recommended to specify as many fields as possible in `application.fam` and not in `manifest.yml`, to avoid duplication and keep the manifest file short.** - -If your `application.fam` defines multiple apps, you can specify the app ID in `manifest.yml` using the `id` field. - -The most important field is `sourcecode`. It points to the app's source code repository. The repository must be public. See [Source code location](#source-code-location) for details. - -Some fields support loading their values from files in the app's source code repository. See [Loading values from files](#loading-values-from-files). - -### Source code location - -The source code origin is specified in the `sourcecode` section. It contains the `type` field, which must be set to `git`. It must also contain the `location` section, which specifies the source code repository location. - -For the `location` object, fields `origin` and `commit_sha` are required. - * `origin` is the git URL of the repository. - * `commit_sha` is the commit SHA of the commit that contains the app's source code being submitted. - * `subdir` is optional and specifies the subdirectory within the repository where the app is located. If `subdir` is not specified, the root of the repository is used. This is useful if the repository contains multiple apps. - -Example: - -```yaml -sourcecode: - type: git - location: - origin: https://github.com/example/test.git - commit_sha: 520d9f1f04a5fcc67d20c759509ba7fe3d3f9091 - subdir: metronome -``` - -### App version - -The app version is used to determine whether a new version of the app is available for installation on the device. All submitted app updates must use a higher version number than the previous version, otherwise the update will be rejected. - -The app version is specified in the `version` field. It must be in format `major.minor`. For example, `1.0` or `2.3`. If not specified in the YAML manifest, the version is taken from `application.fam` file in the app's source code repository. That version is also embedded into the app binary, so to avoid confusion and build errors, it is recommended to specify the version in `application.fam` and not in `manifest.yml`. - -### Loading values from files - -Some fields support loading their values from files in the app's source code repository. This is useful for fields that contain large amounts of text, such as `description` or `changelog`. - -To load a value from a file, specify the field value as a string starting with `@` followed by the path to the file in the app's repository. The path is relative to the app's source code folder, which may be specified in the `location.subdir` field. Example: - -```yaml -... -description: "@README.md" -changelog: "@./docs/changelog.md" -... -``` - -### Markdown support - -For fields that support loading values from files, Markdown formatting is supported. However, only a subset of Markdown features is allowed: - - - Headers of levels 1-2 - - **Bold** and _italic_ text - - Lists - - Links - automatic and inline - -## Screenshots - -Apps submitted to the Flipper Apps Catalog must contain at least one screenshot. Screenshots are used to showcase the app in the Apps Catalog. Screenshots are specified in the `screenshots` section of the manifest as a list of screenshot paths. - -**Screenshots must be created using the qFlipper screenshot feature.** Please don't change their resolution or format. - -## Validating manifest - -You can check your manifest file for validity. To do so, set up a virtual Python environment with the required dependencies: - -```bash -python3 -m venv venv -source venv/bin/activate -pip install -r tools/requirements.txt -``` -*Hint 1.* Above is the Linux-way of doing it. For instance in Windows Power-shell, activating the phython-environment is done with `.\venv\Scripts\Activate.ps1`. -*Hint 2.* The `tools/requirements.txt` is obviously located in your local repo `flipper-application-catalog`. - -If you haven't yet installed the SDK for `ufbt` for your current user, you can install one within the virtual environment. - -```bash -export UFBT_HOME=`realpath venv/ufbt` -ufbt update -``` - -Then run the validation script, passing it the path to your manifest file: - -```bash -python3 tools/bundle.py --nolint applications/CATEGORY/APPID/manifest.yml bundle.zip -``` - -If there are any errors, the script will print them and exit with non-zero exit code. **Be sure to fix all errors before submitting your app.** diff --git a/documentation/manifest-fields.png b/documentation/manifest-fields.png deleted file mode 100644 index b8c62adfcbb88b2ef9aa06db3eaf632e82e2b737..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 297752 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 diff --git a/example/manifest.yml b/example/manifest.yml deleted file mode 100644 index 1605cbf5..00000000 --- a/example/manifest.yml +++ /dev/null @@ -1,26 +0,0 @@ -## This is a sample manifest file for the Flipper Apps Catalog. -## Create one for your app in a corresponding directory in the 'applications' folder. - -sourcecode: - type: git - location: - ## Specify the git URL of your repository - origin: https://github.com/flipperdevices/flipperzero-catalog-sample-app.git - ## Put the full commit SHA of the commit with the app's code you want to submit - commit_sha: a614af3979876fdc1e9f7d2f6c93b4c8f32b1d03 - ## (Optional) If your app is located in a subdirectory of the repository, specify it here - # subdir: . -## If application.fam contains 'fap_description', it will be used as a short description -short_description: A short app description. -## For 'description' and 'changelog', you can use limited markdown syntax -## You can also specify a file from your app's repository as a source with @ -description: | - A long app description. - Very long. - Spanning multiple lines. -changelog: "@CHANGELOG.md" -## Unmodified screenshots from qFlipper -screenshots: - - screenshots/flp0.png - - screenshots/flp1.png - - screenshots/flp2.png diff --git a/tools/build.py b/tools/build.py deleted file mode 100644 index 48d3cf41..00000000 --- a/tools/build.py +++ /dev/null @@ -1,274 +0,0 @@ -import argparse -import hashlib -import io -import logging -import pathlib -import subprocess -import sys -import tempfile -import zipfile -from typing import Optional - -import requests -from flipp_catalog.manifest import ApplicationManifest - - -class GithubOutputHandler(logging.Handler): - def __init__(self, gh_output: Optional[str]): - super().__init__() - self.gh_output = gh_output - - def emit(self, record): - logging.info( - f"Adding log to Github output: {self.format(record)} to {self.gh_output}" - ) - with open(self.gh_output, "a") as f: - f.write(f"{self.format(record)}\n") - - -github_logger = logging.getLogger("github") -github_logger.setLevel(logging.INFO) - - -class UploadError(Exception): - def __init__(self, http_error: requests.HTTPError): - self.http_error = http_error - - def __str__(self): - return f"Upload failed: code {self.http_error}, message {self.http_error.response.text}" - - -class ArtifactUploader: - FAILURE_URL_SUFFIX = "/status/fail" - - def __init__(self, upload_url: str, token: str, github_run_id: int = 0): - self.upload_url = upload_url - self.token = token - self.github_run_id = github_run_id - - def _get_headers(self): - return { - "Authorization": f"Bearer {self.token}", - } - - def _get_params(self): - params = {} - if self.github_run_id: - params["github_run_id"] = (None, self.github_run_id) - return params - - def process_response(self, response: requests.Response): - try: - response.raise_for_status() - except requests.HTTPError as e: - raise UploadError(e) - - def upload(self, artifact: pathlib.Path): - # Create a ZIP file with the artifact - sha256 = hashlib.sha256() - with open(artifact, "rb") as f: - sha256.update(f.read()) - sha256_hash = sha256.hexdigest() - - github_logger.info(f"SHA256 for {artifact.name} = `{sha256_hash}`") - - artifact_zip = artifact.with_suffix(".zip") - with zipfile.ZipFile(artifact_zip, "w") as zip_ref: - zip_ref.write(artifact, artifact.name) - - # Upload it - with artifact_zip.open("rb") as zip_fin: - params = self._get_params() - params.update( - { - "build_checksum": (None, sha256_hash), - "build": zip_fin, - } - ) - response = requests.post( - self.upload_url, - headers=self._get_headers(), - files=params, - ) - self.process_response(response) - - def report_error(self, error_log: str): - headers = self._get_headers() - params = self._get_params() - params.update({"logs": io.BytesIO(error_log.encode("utf-8"))}) - - response = requests.post( - self.upload_url + self.FAILURE_URL_SUFFIX, - headers=headers, - files=params, - ) - self.process_response(response) - - -class BundleBuildError(Exception): - def __init__(self, stdout: str, stderr: str): - self.stdout = stdout - self.stderr = stderr - - -class BundleBuilder: - def __init__(self, bundle_zip_url: str): - self.bundle_zip_url = bundle_zip_url - self.tmp_dir = tempfile.TemporaryDirectory() - self.tmp_path = pathlib.Path(self.tmp_dir.name) - - def __del__(self): - logging.info("Cleaning up") - self.tmp_dir.cleanup() - - def build(self): - logging.info(f"Building bundle from {self.bundle_zip_url}") - response = requests.get(self.bundle_zip_url) - response.raise_for_status() - - # subprocess.call(["open", self.tmp_path]) - - zip_file = self.tmp_path / "bundle.zip" - - with open(zip_file, "wb") as f: - f.write(response.content) - - logging.info(f"Bundle saved to {zip_file}") - - # Unzip the bundle - logging.info("Unzipping bundle") - - with zipfile.ZipFile(zip_file, "r") as zip_ref: - zip_ref.extractall(self.tmp_path) - - logging.info("Bundle unzipped") - - manifest_file = self.tmp_path / "manifest.yml" - manifest = ApplicationManifest.from_yaml_file(manifest_file) - logging.info(f"Manifest: {manifest}") - - code_dir = self.tmp_path / "code" - - # Build the bundle - logging.info("Building bundle") - - p = subprocess.run( - [ - "ufbt", - "faps", - ], - cwd=code_dir, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - ) - logging.info(p.stdout.decode("utf-8")) - if p.stderr: - logging.error(p.stderr.decode("utf-8")) - - if p.returncode != 0: - raise BundleBuildError(p.stdout.decode("utf-8"), p.stderr.decode("utf-8")) - - logging.info(f"Bundle built in {code_dir}") - - artifact = code_dir / "dist" / f"{manifest.id}.fap" - - if not artifact.exists(): - raise FileNotFoundError(f"Artifact not found: {artifact}") - else: - logging.info(f"Artifact built: {artifact}") - - return artifact - - -class Main: - def __init__(self): - self.parser = argparse.ArgumentParser(description="Build source code bundle") - self.parser.add_argument( - "-d", - "--debug", - action="store_true", - help="Enable debug mode", - ) - - self.parser.add_argument( - "--api", - type=str, - help="API URL", - required=True, - ) - - self.parser.add_argument( - "--bundle-path", - type=str, - help="Path to zip file with source code bundle, relative to API root", - required=True, - ) - - self.parser.add_argument( - "--upload-path", - type=str, - help="Path to upload zip file with artifact, relative to API root", - required=True, - ) - - self.parser.add_argument( - "--token", - type=str, - help="API token", - required=True, - ) - - self.parser.add_argument( - "--gh-summary", - type=str, - help="Github summary output file", - default="", - ) - - self.parser.add_argument( - "--gh-run-id", - type=int, - help="Github run ID", - default=0, - ) - - def main(self): - args = self.parser.parse_args() - - if args.debug: - logging.getLogger().setLevel(logging.DEBUG) - - if args.gh_summary: - logging.info(f"Also logging to Github output file {args.gh_summary}") - github_logger.addHandler(GithubOutputHandler(args.gh_summary)) - - builder = BundleBuilder(f"{args.api}{args.bundle_path}") - uploader = ArtifactUploader( - f"{args.api}{args.upload_path}", - token=args.token, - github_run_id=args.gh_run_id, - ) - - try: - fap_path = builder.build() - uploader.upload(fap_path) - return 0 - except BundleBuildError as e: - logging.error(f"Bundle build failed: {e.stderr}") - uploader.report_error(f"Stdout: {e.stdout}\n\n\nStderr: {e.stderr}\n") - except UploadError as e: - logging.error(f"Upload failed: {e}") - except Exception as e: - logging.error(f"Bundle build failed: {e}") - uploader.report_error(str(e)) - return 1 - - -if __name__ == "__main__": - logging.basicConfig( - format="%(asctime)s.%(msecs)03d [%(levelname).1s] %(message)s", - level=logging.INFO, - datefmt="%H:%M:%S", - ) - - sys.exit(Main().main()) diff --git a/tools/bundle.py b/tools/bundle.py deleted file mode 100644 index c230bee3..00000000 --- a/tools/bundle.py +++ /dev/null @@ -1,548 +0,0 @@ -import argparse -import json -import logging -import os -import re -import shutil -import subprocess -import sys -import zipfile -from pathlib import Path -from tempfile import TemporaryDirectory -from typing import Dict, List - -import yaml -from dataclass_wizard.dumpers import asdict -from flipp_catalog import BundlerException -from flipp_catalog.manifest import ApplicationManifest -from flipp_catalog.markdown_filter import BasicFormattingEnforcingExtension -from markdown import Markdown -from PIL import Image - -# Temporary hack -try: - import SCons - import SCons.Node -except ImportError: - import sys - - class _fbt_util_stub: - @staticmethod - def resolve_real_dir_node(node): - return node - - sys.modules["fbt.util"] = _fbt_util_stub - - - -class AppBundler: - MANIFEST_YAML_NAME = "manifest.yml" - UFBT_COMMAND = "ufbt" - APP_ID_REGEX = re.compile(r"^[a-z0-9_]+$") - FLIPPER_SCREEN_SIZE = (128, 64) - APP_SCREENSHOT_DOWNSCALE_FACTORS = (4, 8) - FLIPPER_ICON_SIZE = (10, 10) - BLACK_THRESHOLD = (15, 15, 15) - PIXEL_BLACK = (0, 0, 0, 255) - PIXEL_TRANSPARENT = (255, 255, 255, 0) - - def __init__(self, manifest_yaml_path: str, bundle_path: str): - self._log = logging.getLogger(self.__class__.__name__) - self._manifest_yaml_path = manifest_yaml_path - self._bundle_path = bundle_path - self._tmp_dir = TemporaryDirectory() - self._tmp_path = Path(self._tmp_dir.name).resolve() - self._tmp_code_dir = TemporaryDirectory() - self._tmp_code_path = Path(self._tmp_code_dir.name).resolve() - self._code_dir = self._tmp_path / "code" - self._assets_dir = self._tmp_path / "assets" - self._assets_dir.mkdir() - self._fam_manifest = None - self._log.info(f"Working in '{self._tmp_path}'") - self._load() - - def bundle( - self, - *, - skip_lint: bool = False, - skip_build: bool = False, - skip_source_code: bool = False, - ): - self._fetch_sources() - if not skip_lint: - self._lint_sources() - if not skip_build: - self._build_sources() - self._update_manifest_from_fap() - self._check_manifest_path() - self._process_includes() - self._process_assets() - self._check_manifest_values() - self._build_package(skip_source_code) - - def __enter__(self): - return self - - def __exit__(self, type, value, traceback): - self.cleanup() - - def cleanup(self): - self._tmp_dir.cleanup() - self._tmp_code_dir.cleanup() - - def _load(self): - try: - self._manifest = ApplicationManifest.from_yaml_file( - self._manifest_yaml_path - ) - except FileNotFoundError: - raise BundlerException(f"File '{self._manifest_yaml_path}' not found") - except yaml.YAMLError as e: - raise BundlerException(f"YAML error: {e}") - self._log.info(f"Loaded app manifest from {self._manifest_yaml_path}") - self._log.debug(self._manifest) - - def _validate_path(self, path: Path): - self._log.debug(f"Validating path: {path} vs {self._tmp_path}") - if not path.exists(): - raise BundlerException(f"Path not found: {path}") - if not path.resolve().is_relative_to(self._tmp_path): - raise BundlerException(f"Path traversal detected: {path}") - - def _rel_path(self, path: Path): - self._validate_path(path) - return path.relative_to(self._tmp_path).as_posix() - - def __exec_git(self, *args, **kwargs): - return subprocess.check_output( - ["git", *args], cwd=self._tmp_code_path, **kwargs - ) - - def _fetch_sources(self): - if self._manifest.sourcecode.type != "git": - raise BundlerException( - f"Unknown sourcecode type: {self._manifest.sourcecode.type}" - ) - - location_data = self._manifest.sourcecode.location - repo_origin = location_data["origin"] - - if not (commit_sha := location_data.get("commit_sha")): - raise BundlerException( - f"Commit SHA (sourcecode.location.commit_sha) not specified for {repo_origin}" - ) - - if len(commit_sha) != 40: - raise BundlerException( - f"Commit SHA (sourcecode.location.commit_sha) for {repo_origin} is not 40 characters long" - ) - - self._log.info(f"Cloning {repo_origin} to {self._tmp_code_path}") - self.__exec_git( - "clone", repo_origin, self._tmp_code_path, "--recurse-submodules" - ) - - self._log.info(f"Cloned. Checking out commit {commit_sha}") - self.__exec_git("-c", "advice.detachedHead=false", "checkout", commit_sha) - - self._log.info(f"Checked out. Updating submodules") - self.__exec_git("submodule", "update", "--init", "--recursive") - - repo_code = self._tmp_code_path - if sub_dir := location_data.get("subdir"): - repo_code = repo_code / sub_dir - - if not repo_code.resolve().is_relative_to(self._tmp_code_path): - raise BundlerException( - f"Code path traversal detected: {repo_code} vs {self._tmp_code_path}" - ) - - self._log.info(f"Moving {repo_code} to {self._code_dir}") - shutil.move(repo_code, self._code_dir) - - def _lint_sources(self): - try: - self._log.info("Linting") - subprocess.check_output([self.UFBT_COMMAND, "lint"], cwd=self._code_dir) - except subprocess.CalledProcessError as e: - raise BundlerException(f"Code checks failed: {str(e.output, 'utf-8')}") - - def _build_sources(self): - try: - self._log.info("Building") - subprocess.check_output([self.UFBT_COMMAND], cwd=self._code_dir) - except subprocess.CalledProcessError as e: - raise BundlerException(f"Code checks failed: {str(e.output, 'utf-8')}") - - def _update_manifest_from_fap(self): - app_manifest_path = self._code_dir / "application.fam" - if not os.path.exists(app_manifest_path): - raise BundlerException("Application manifest not found") - - from fbt.appmanifest import AppManager, FlipperAppType - - app_manager = AppManager() - app_manager.load_manifest(app_manifest_path, self._code_dir) - - known_ext_apps = list( - filter( - lambda app: app.apptype == FlipperAppType.EXTERNAL, - app_manager.known_apps.values(), - ) - ) - - if len(known_ext_apps) == 0: - raise BundlerException("No external applications found") - elif len(known_ext_apps) == 1: - self._fam_manifest = known_ext_apps[0] - else: - if app := next( - filter(lambda app: app.appid == self._manifest.id, known_ext_apps), - None, - ): - self._log.info(f"Selected application {app.name}") - self._fam_manifest = app - else: - raise BundlerException( - f"Multiple external applications found, specify 'id' in the manifest.yml ({[app.appid for app in known_ext_apps]})" - ) - - self._manifest.sync_from(self._fam_manifest) - - def _process_includes(self): - for attr_name in ("changelog", "description"): - if attr_value := getattr(self._manifest, attr_name): - if attr_value.startswith("@"): - file_path = self._code_dir / attr_value[1:] - self._validate_path(file_path) - self._log.info(f"Including {attr_name} from file {file_path}") - with open(file_path, "r") as f: - setattr(self._manifest, attr_name, f.read()) - - self._log.debug(f"Updated: {self._manifest}") - - def __convert_image_pixels(self, img: Image): - # Set all pixels above threshold to transparent - img.putdata( - tuple( - ( - self.PIXEL_TRANSPARENT - if pixel[:3] > self.BLACK_THRESHOLD - else self.PIXEL_BLACK - ) - for pixel in img.getdata() - ) - ) - - def __process_screenshot( - self, screenshot_src_path: Path, screenshot_dst_path: Path - ): - self._validate_path(screenshot_src_path) - # Check image type / downsize x4 and convert to transparent png - img = Image.open(screenshot_src_path) - if img.mode != "RGBA": - img = img.convert("RGBA") - - if img.width < img.height: - raise BundlerException( - f"Screenshot {screenshot_src_path} is in portrait orientation. Only landscape screenshots are allowed." - ) - - # TODO: guess downsize ratio? - downscale_factors = ( - img.width // self.FLIPPER_SCREEN_SIZE[0], - img.height // self.FLIPPER_SCREEN_SIZE[1], - ) - if ( - downscale_factors[0] != downscale_factors[1] - or downscale_factors[0] not in self.APP_SCREENSHOT_DOWNSCALE_FACTORS - ): - raise BundlerException( - f"Screenshot {screenshot_src_path} has resolution {img.width}x{img.height}, " - f"downscaled to {downscale_factors[0]}x{downscale_factors[1]}, " - f"expected {self.FLIPPER_SCREEN_SIZE[0]}x{self.FLIPPER_SCREEN_SIZE[1]}" - ) - - downscaled_resolution = ( - img.width // downscale_factors[0], - img.height // downscale_factors[1], - ) - if downscaled_resolution != self.FLIPPER_SCREEN_SIZE: - raise BundlerException( - f"Screenshot {screenshot_src_path} has resolution {img.width}x{img.height}, " - f"downscaled to {downscaled_resolution[0]}x{downscaled_resolution[1]}, " - f"expected {self.FLIPPER_SCREEN_SIZE[0]}x{self.FLIPPER_SCREEN_SIZE[1]}" - ) - - img = img.resize(downscaled_resolution, resample=Image.Resampling.NEAREST) - self.__convert_image_pixels(img) - img.save(screenshot_dst_path, "PNG") - - def __process_icon(self, icon_src_path: Path, icon_dst_path: Path): - self._validate_path(icon_src_path) - # Check image type and size and convert to transparent png - img = Image.open(icon_src_path) - if img.mode != "RGBA": - img = img.convert("RGBA") - if img.size != self.FLIPPER_ICON_SIZE: - raise BundlerException( - f"Icon {icon_src_path} has resolution {img.width}x{img.height}, " - f"expected {self.FLIPPER_ICON_SIZE[0]}x{self.FLIPPER_ICON_SIZE[1]}" - ) - - if any( - map( - lambda pixel: pixel[:3] != self.PIXEL_TRANSPARENT[:3] - and pixel[:3] != self.PIXEL_BLACK[:3], - img.getdata(), - ) - ): - raise BundlerException( - f"Icon {os.path.basename(icon_src_path)} is not black and white" - ) - self.__convert_image_pixels(img) - img.save(icon_dst_path, "PNG") - - def _process_assets(self): - icon_path = self._assets_dir / "icon.png" - src_icon_path = self._code_dir / self._fam_manifest.fap_icon - self._validate_path(src_icon_path) - self.__process_icon(src_icon_path, icon_path) - self._manifest.icon = self._rel_path(icon_path) - - screenshot_dir = self._assets_dir / "screenshots" - screenshot_dir.mkdir(parents=True, exist_ok=True) - new_screenshot_paths = [] - for i, screenshot in enumerate(self._manifest.screenshots): - new_screenshot_path = ( - screenshot_dir / f"{i}{os.path.splitext(screenshot)[1]}" - ) - self.__process_screenshot(self._code_dir / screenshot, new_screenshot_path) - new_screenshot_paths.append(self._rel_path(new_screenshot_path)) - - if len(new_screenshot_paths) == 0: - raise BundlerException("No screenshots found") - - self._manifest.screenshots = new_screenshot_paths - - def _check_manifest_path(self): - # Extract path components from self._manifest_yaml_path - manifest_path_components = Path(self._manifest_yaml_path).parts - # Find next to component called "applications", if there is one - try: - app_folder_index = manifest_path_components.index("applications") - except ValueError: - app_folder_index = -1 - self._log.info("Skipping category check, no 'applications' folder found") - # If there is one, check that it matches the one in the manifest - if app_folder_index != -1: - try: - path_category = manifest_path_components[app_folder_index + 1] - path_app_id = manifest_path_components[app_folder_index + 2] - manifest_name = manifest_path_components[app_folder_index + 3] - except IndexError: - raise BundlerException( - f"Invalid path to manifest: {self._manifest_yaml_path}" - ) - - if manifest_name != self.MANIFEST_YAML_NAME: - raise BundlerException( - f"Manifest file name '{manifest_name}' does not match " - f"expected name '{self.MANIFEST_YAML_NAME}'" - ) - if self._manifest.id != path_app_id: - raise BundlerException( - f"App ID '{self._manifest.id}' in manifest does not match " - f"app ID '{path_app_id}' from path '{self._manifest_yaml_path}'" - ) - if self._manifest.category != path_category: - raise BundlerException( - f"App category '{self._manifest.category}' in manifest does not match " - f"category '{path_category}' from path '{self._manifest_yaml_path}'" - ) - - def _check_manifest_values(self): - errors = [] - - if not self.APP_ID_REGEX.match(self._manifest.id): - errors.append( - f"App ID '{self._manifest.id}' does not match regex " - f"{self.APP_ID_REGEX.pattern}" - ) - - if not self._manifest.changelog: - errors.append(f"Changelog is empty") - - if not self._manifest.short_description: - errors.append(f"Short description is empty") - - if not self._manifest.description: - errors.append(f"Description is empty") - - if errors: - raise BundlerException("\n".join(errors)) - - self.__check_markdown(self._manifest.changelog) - self.__check_markdown(self._manifest.description) - - def __check_markdown(self, markdown: str): - try: - mk = Markdown(extensions=[BasicFormattingEnforcingExtension()]) - mk.convert(markdown) - - except Exception as e: - raise BundlerException(f"Markdown error: {e}") - - def _build_package(self, skip_source_code: bool = False): - self._log.info(f"Saving updated manifest with {skip_source_code=}") - self._manifest.to_yaml_file(self._tmp_path / self.MANIFEST_YAML_NAME) - - with zipfile.ZipFile( - self._bundle_path, mode="w", compression=zipfile.ZIP_DEFLATED - ) as new_zip: - for folder, subfolders, filenames in os.walk(self._tmp_path): - # Exclude hidden folders and "dist" folder with build artifacts - for folder_name in subfolders.copy(): - if folder_name.startswith(".") or folder_name == "dist": - self._log.debug(f"Skipping folder {filename}") - subfolders.remove(folder_name) - # Exclude source code folder if requested - if skip_source_code and self._code_dir == Path(folder, folder_name): - self._log.debug(f"Skipping source code folder {folder}") - subfolders.remove(folder_name) - - for filename in filenames: - if filename.startswith("."): - self._log.debug(f"Skipping hidden file {filename}") - continue - file_path = Path(os.path.join(folder, filename)) - self._log.debug(f"Adding {file_path}") - new_zip.write(file_path, self._rel_path(file_path)) - - self._log.info(f"Bundle created: {self._bundle_path}") - - def write_manifest_json(self, manifest_path: Path): - self._log.info(f"Writing JSON manifest: {manifest_path}") - with open(manifest_path, "w") as f: - json.dump(asdict(self._manifest), f, indent=4) - - def package_artifacts(self, artifacts_path: Path): - self._log.info(f"Packaging artifacts: {artifacts_path}") - dist_dir = self._code_dir / "dist" - with zipfile.ZipFile( - artifacts_path, mode="w", compression=zipfile.ZIP_DEFLATED - ) as new_zip: - # Package "dist" folder with build artifacts - for folder, subfolders, filenames in os.walk(dist_dir): - for filename in filenames: - file_path = Path(os.path.join(folder, filename)) - self._log.info(f"Adding {file_path}") - new_zip.write(file_path, file_path.relative_to(dist_dir)) - - -class Main: - def __init__(self): - # Argument Parser - # Logging - self.logger = logging.getLogger() - self.parser = argparse.ArgumentParser() - self.parser.add_argument( - "-d", - "--debug", - action="store_true", - help="Debug", - ) - self.parser.add_argument( - "manifest_path", - type=Path, - help="Path to the manifest file", - ) - self.parser.add_argument( - "bundle_zip_path", - type=Path, - help="Path to the bundle file", - ) - self.parser.add_argument( - "--nobuild", - action="store_true", - default=False, - help="Skip building the application", - ) - self.parser.add_argument( - "--nolint", - action="store_true", - default=False, - help="Skip linting the application", - ) - self.parser.add_argument( - "--nosourcecode", - action="store_true", - default=False, - help="Skip source code of the application", - ) - self.parser.add_argument( - "--json-manifest", - dest="json", - default="", - help="File to write extra manifest copy in JSON format to", - ) - self.parser.add_argument( - "--artifacts", - default=None, - help="ZIP file to write build artifacts to", - ) - - def main(self): - return self.process(self.parser.parse_args()) - - def _setup_imports(self): - try: - subprocess.check_output( - [AppBundler.UFBT_COMMAND, "update"], encoding="utf-8" - ) - except subprocess.CalledProcessError as e: - raise BundlerException(f"Could not update ufbt: {e}") - - try: - ufbt_state_dir = subprocess.check_output( - [AppBundler.UFBT_COMMAND, "status", "sdk_dir"], encoding="utf-8" - ).strip() - except subprocess.CalledProcessError as e: - raise BundlerException(f"Could not find ufbt state dir: {e}") - - fbt_scripts_dir = Path(ufbt_state_dir) / "scripts" - if not fbt_scripts_dir.exists(): - raise BundlerException(f"Could not find fbt scripts dir: {fbt_scripts_dir}") - - self.logger.debug(f"Using fbt scripts dir: {fbt_scripts_dir}") - sys.path.insert(0, str(fbt_scripts_dir)) - - def process(self, args): - try: - self._setup_imports() - with AppBundler(args.manifest_path, args.bundle_zip_path) as bundler: - bundler.bundle( - skip_lint=args.nolint, - skip_build=args.nobuild, - skip_source_code=args.nosourcecode, - ) - if args.json: - bundler.write_manifest_json(args.json) - if args.artifacts: - bundler.package_artifacts(Path(args.artifacts)) - return 0 - except BundlerException as e: - self.logger.error(e) - if args.debug: - self.logger.exception(e) - return 1 - - -if __name__ == "__main__": - logging.basicConfig( - format="%(asctime)s.%(msecs)03d [%(levelname).1s] %(message)s", - level=logging.INFO, - datefmt="%H:%M:%S", - ) - - sys.exit(Main().main()) diff --git a/tools/flipp_catalog/__init__.py b/tools/flipp_catalog/__init__.py deleted file mode 100644 index cbae4e80..00000000 --- a/tools/flipp_catalog/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -class BundlerException(Exception): - pass - diff --git a/tools/flipp_catalog/manifest.py b/tools/flipp_catalog/manifest.py deleted file mode 100644 index 4743c037..00000000 --- a/tools/flipp_catalog/manifest.py +++ /dev/null @@ -1,74 +0,0 @@ -import os -from dataclasses import dataclass, field -from typing import Dict, List -import logging - -from dataclass_wizard import YAMLWizard -from . import BundlerException - - -@dataclass -class CodeLocation: - type: str - location: Dict[str, str] - - -@dataclass -class ApplicationManifest(YAMLWizard, key_transform="SNAKE"): - sourcecode: CodeLocation - name: str = "" - id: str = "" - author: str = "" - version: str = "" - icon: str = "" - category: str = "" - short_description: str = "" - description: str = "" - changelog: str = "" - screenshots: List[str] = field(default_factory=list) - targets: List[str] = field(default_factory=list) - - def sync_from(self, app: "FlipperApplication"): - field_map = { - # yaml_field, (app_field, converter, must_match) - "name": ("name", None, True), - "id": ("appid", None, True), - "author": ("fap_author", None, False), - "category": ("fap_category", None, False), - "icon": ("fap_icon", None, False), - "short_description": ("fap_description", None, False), - "targets": ("targets", None, False), - # Version matcher error flag must be set to "True" on release - "version": ( - "fap_version", - lambda v: ".".join(map(str, v)), - os.environ.get("BUNDLE_ALLOW_VERSION_MISMATCH", "0") == "0", - ), - } - - for yaml_field, (app_field, converter, must_match) in field_map.items(): - current_value = getattr(self, yaml_field) - fam_value = getattr(app, app_field) - if converter: - fam_value = converter(fam_value) - - if type(current_value) != type(fam_value): - raise BundlerException( - f"Type mismatch for {yaml_field}: {type(current_value)} != {type(fam_value)}" - ) - - if current_value and fam_value and current_value != fam_value: - error_msg = f"Value in YAML for '{yaml_field}' is different from value in FAM: '{current_value}' / '{fam_value}'" - if must_match: - raise BundlerException(error_msg) - - logging.getLogger(self.__class__.__name__).warning( - f"{error_msg}. Using value from YAML." - ) - continue - - if not current_value: - logging.getLogger(self.__class__.__name__).info( - f"Value for '{yaml_field}' is empty in YAML. Using value '{fam_value}' from FAM." - ) - setattr(self, yaml_field, fam_value) diff --git a/tools/flipp_catalog/markdown_filter.py b/tools/flipp_catalog/markdown_filter.py deleted file mode 100644 index 5bdbc68e..00000000 --- a/tools/flipp_catalog/markdown_filter.py +++ /dev/null @@ -1,111 +0,0 @@ -from markdown.extensions import Extension -from markdown.preprocessors import HtmlBlockPreprocessor - - -# A Markdown extension that removes all but basic text formatting -class BasicFormattingEnforcingExtension(Extension): - ERROR_MESSAGE = "Markdown element '{}' is not allowed" - MAX_HEADER_DEPTH = 2 - - def __init__(self, **kwargs): - # override the html preprocessor to avoid html text conversion so as not to be skipped by HtmlInlineProcessor - HtmlBlockPreprocessor.run = lambda _self, lines: lines - super().__init__(**kwargs) - - @staticmethod - def handleMatch(element_type): - def wrapper(instance, m): - raise Exception( - BasicFormattingEnforcingExtension.ERROR_MESSAGE.format(element_type) - ) - - return wrapper - - @staticmethod - def not_supported_reference_processor_wrapper(instance, method): - def wrapper(parent, block): - res = method(parent, block) - - if res: - raise Exception( - BasicFormattingEnforcingExtension.ERROR_MESSAGE.format("Reference") - ) - - return False - - return wrapper - - @staticmethod - def not_supported_block_processor_wrapper(instance, name=None): - def wrapper(parent, block): - raise Exception( - BasicFormattingEnforcingExtension.ERROR_MESSAGE.format( - name or instance.__class__.__name__ - ) - ) - - return wrapper - - @staticmethod - def not_supported_header_depth_processor_wrapper(instance): - orig_run = instance.run - - def wrapper(parent, blocks): - if m := instance.RE.match(blocks[0]): - header_depth = len(m.group("level")) - if header_depth > BasicFormattingEnforcingExtension.MAX_HEADER_DEPTH: - raise Exception( - f"Markdown element 'Header Depth' max level {BasicFormattingEnforcingExtension.MAX_HEADER_DEPTH} exceeded" - ) - - return orig_run(parent, blocks) - - return wrapper - - def extendMarkdown(self, md): - for md_element in ( - "backtick", - # "reference", - # "link", - "image_link", - "image_reference", - "short_reference", - "short_image_ref", - # "autolink", - "automail", - "html", - "entity", - ): - md.inlinePatterns[md_element].handleMatch = self.handleMatch( - md_element.capitalize() - ) - - hash_header_processor = md.parser.blockprocessors["hashheader"] - hash_header_processor.run = self.not_supported_header_depth_processor_wrapper( - instance=hash_header_processor - ) - - setext_header_processor = md.parser.blockprocessors["setextheader"] - setext_header_processor.run = self.not_supported_block_processor_wrapper( - instance=setext_header_processor, name="Setext Header" - ) - - code_block_processor = md.parser.blockprocessors["code"] - code_block_processor.run = self.not_supported_block_processor_wrapper( - instance=code_block_processor, name="Code Block" - ) - - hr_processor = md.parser.blockprocessors["hr"] - hr_processor.run = self.not_supported_block_processor_wrapper( - instance=hr_processor, name="Horizontal Line" - ) - - quote_processor = md.parser.blockprocessors["quote"] - quote_processor.run = self.not_supported_block_processor_wrapper( - instance=quote_processor, name="Quote" - ) - - reference_processor = md.parser.blockprocessors["reference"] - reference_processor.run = self.not_supported_reference_processor_wrapper( - instance=reference_processor, method=reference_processor.run - ) diff --git a/tools/requirements.txt b/tools/requirements.txt deleted file mode 100644 index b14083ab..00000000 --- a/tools/requirements.txt +++ /dev/null @@ -1,6 +0,0 @@ -dataclass-wizard==0.26.0 -Pillow==10.4.0 -PyYAML==6.0.2 -Markdown==3.7 -ufbt>=0.2.5 -requests==2.32.3 diff --git a/tools/test_markdown_sanitizer.py b/tools/test_markdown_sanitizer.py deleted file mode 100644 index db484d86..00000000 --- a/tools/test_markdown_sanitizer.py +++ /dev/null @@ -1,126 +0,0 @@ -import unittest - -from flipp_catalog.markdown_filter import BasicFormattingEnforcingExtension -from markdown import Markdown - - -class TestBasicTextExtension(unittest.TestCase): - def setUp(self): - self.md = Markdown(extensions=[BasicFormattingEnforcingExtension()]) - - def test_backtick_not_allowed(self): - with self.assertRaises(Exception): - self.md.convert("`example`") - - def test_reference_not_allowed(self): - with self.assertRaises(Exception): - self.md.convert("[example][example]") - - def test_link_not_allowed(self): - self.assertIn("href", self.md.convert("[example](http://example.com)")) - - def test_image_link_not_allowed(self): - with self.assertRaises(Exception): - self.md.convert("![example](http://example.com/image.png)") - - def test_image_reference_not_allowed(self): - with self.assertRaises(Exception): - self.md.convert("![example][ref]\n\n[ref]: http://example.com/image.png") - - def test_short_image_ref_not_allowed(self): - with self.assertRaises(Exception): - self.md.convert("![example]") - - def test_autolink_not_allowed(self): - self.assertIn("href", self.md.convert("")) - - def test_automail_not_allowed(self): - with self.assertRaises(Exception): - self.md.convert("") - - def test_html_not_allowed(self): - with self.assertRaises(Exception): - self.md.convert("

example

") - - def test_entity_not_allowed(self): - with self.assertRaises(Exception): - self.md.convert(" ") - - def test_hash_header_not_allowed(self): - self.md.convert("#example") - self.md.convert("##example") - with self.assertRaises(Exception): - self.md.convert("###example") - - with self.assertRaises(Exception): - self.md.convert("#####example") - - def test_setext_header_not_allowed(self): - with self.assertRaises(Exception): - self.md.convert( - """ - example - ============= - """ - ) - - with self.assertRaises(Exception): - self.md.convert( - """ - example - ------------- - """ - ) - - def test_code_block_not_allowed(self): - with self.assertRaises(Exception): - self.md.convert( - """ - example - """ - ) - - def test_horizontal_line_not_allowed(self): - with self.assertRaises(Exception): - self.md.convert("- - -") - - with self.assertRaises(Exception): - self.md.convert("---------------------------------------") - - with self.assertRaises(Exception): - self.md.convert("*****") - - with self.assertRaises(Exception): - self.md.convert("***") - - with self.assertRaises(Exception): - self.md.convert("* * *") - - def test_quote_not_allowed(self): - with self.assertRaises(Exception): - self.md.convert("> example") - - with self.assertRaises(Exception): - self.md.convert(">> example") - - def test_list_unordered(self): - self.md.convert("* Item \n * Item") - - def test_list_ordered(self): - self.md.convert("1. Item \n 2. Item") - - def test_list_mixed(self): - self.md.convert("1. Item\n2. Item\n * Item\n - Item\n3. Item") - - def test_bold(self): - self.md.convert("**example**") - self.md.convert("__example__") - - def test_italic(self): - self.md.convert("*example*") - self.md.convert("_example_") - - def test_bold_and_italic(self): - self.md.convert("_**example**_") - self.md.convert("**_example_**") - self.md.convert("***example***") diff --git a/tools/widget.py b/tools/widget.py deleted file mode 100644 index b7d022db..00000000 --- a/tools/widget.py +++ /dev/null @@ -1,79 +0,0 @@ -import argparse -import os - -import requests -import logging -import sys - - -class Main: - ARCHIVARIUS_URL = os.getenv("ARCHIVARIUS_URL") - - def __init__(self): - self.logger = logging.getLogger() - if self.ARCHIVARIUS_URL is None: - self.logger.error("ARCHIVARIUS_URL is not set in environment") - sys.exit(1) - - self.parser = argparse.ArgumentParser() - - self.parser.add_argument( - "application_name", - help="Application Name", - ) - self.parser.add_argument( - "application_category", - help="Application Category", - ) - - def main(self): - return self.process(self.parser.parse_args()) - - def add_widget_to_readme( - self, - readme_file_arr: list, - application_name: str, - ) -> list: - widget_template = ( - "[![{APPLICATION_NAME}]" - "({ARCHIVARIUS_URL}/application/{APPLICATION_NAME}/widget)]" - "({ARCHIVARIUS_URL}/application/{APPLICATION_NAME}/page)" - ) - readme_file_arr.append( - widget_template.format( - ARCHIVARIUS_URL=self.ARCHIVARIUS_URL, - APPLICATION_NAME=application_name, - ) - ) - return readme_file_arr - - def process(self, args): - try: - with open(f".github/WIDGET_TEMPLATE.md", "r") as reader: - readme_file_arr = reader.readlines() - readme_file_arr.append("\n") - - readme_file_arr = self.add_widget_to_readme( - readme_file_arr, application_name=args.application_name - ) - - with open( - f"applications/{args.application_category}/{args.application_name}/README.md", - "w", - ) as writer: - for line in readme_file_arr: - writer.write(line) - return 0 - except Exception as e: - self.logger.exception(e) - return 1 - - -if __name__ == "__main__": - logging.basicConfig( - format="%(asctime)s.%(msecs)03d [%(levelname).1s] %(message)s", - level=logging.INFO, - datefmt="%H:%M:%S", - ) - - sys.exit(Main().main()) From 51c69ad26cd329b18b0a5a8c0cf5e59e9e112615 Mon Sep 17 00:00:00 2001 From: hypery11 Date: Thu, 16 Apr 2026 15:36:09 +0800 Subject: [PATCH 13/13] =?UTF-8?q?update=20tesla=5Fmod=20to=20v2.9.0=20?= =?UTF-8?q?=E2=80=94=20Ban=20Shield?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- applications/GPIO/tesla_mod/manifest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/GPIO/tesla_mod/manifest.yml b/applications/GPIO/tesla_mod/manifest.yml index a1669480..d37f555c 100644 --- a/applications/GPIO/tesla_mod/manifest.yml +++ b/applications/GPIO/tesla_mod/manifest.yml @@ -2,7 +2,7 @@ sourcecode: type: git location: origin: https://github.com/hypery11/flipper-tesla-fsd.git - commit_sha: a08457569a7e0e6ed060157d02b475ecc0aad01c + commit_sha: 7eabefe7d8aeca6032b95308dbbb448e2bcf3f80 short_description: Tesla CAN bus toolkit — FSD region-gate bypass, nag killer, BMS dashboard, extras. Requires CAN Add-On. description: "@README.md"