├── .github └── FUNDING.yml ├── .gitignore ├── .gitmodules ├── .vscode ├── extensions.json └── settings.json ├── LICENSE ├── README.md ├── frontend ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .postcssrc.js ├── babel.config.js ├── jsconfig.json ├── package-lock.json ├── package.json ├── quasar.conf.js └── src │ ├── App.vue │ ├── assets │ ├── flipper-screen-updating.png │ └── flipper.svg │ ├── components │ ├── ProgressBar.vue │ └── Updater.vue │ ├── css │ ├── app.sass │ └── quasar.variables.sass │ ├── flipper │ ├── core.js │ ├── protobuf │ │ ├── commands │ │ │ ├── core.js │ │ │ ├── gui.js │ │ │ ├── storage.js │ │ │ └── system.js │ │ ├── proto-compiled.js │ │ ├── rpc.js │ │ └── xbms.js │ ├── serial.js │ ├── util.js │ └── workers │ │ └── webSerial.js │ ├── index.template.html │ ├── layouts │ ├── PacksLayout.vue │ └── UpdateLayout.vue │ ├── pages │ ├── Packs.vue │ └── Update.vue │ ├── quasar.d.ts │ ├── router │ ├── index.js │ └── routes.js │ ├── untar │ ├── ProgressivePromise.js │ ├── untar-worker.js │ └── untar.js │ └── util │ └── util.js └── public ├── android-chrome-192x192.png ├── android-chrome-256x256.png ├── apple-touch-icon.png ├── asset-packs-frame └── index.html ├── asset-packs └── index.html ├── browserconfig.xml ├── css ├── animate.css ├── app.d4a8c1ed.css ├── bootstrap.min.css ├── ionicons.min.css ├── responsive.css └── vendor.9b29db89.css ├── favicon-16x16.png ├── favicon-32x32.png ├── favicon.ico ├── fonts ├── KFOkCnqEu92Fr1MmgVxIIzQ.68bb21d0.woff ├── KFOlCnqEu92Fr1MmEU9fBBc-.48af7707.woff ├── KFOlCnqEu92Fr1MmSU5fBBc-.c2f7ab22.woff ├── KFOlCnqEu92Fr1MmWUlfBBc-.77ecb942.woff ├── KFOlCnqEu92Fr1MmYUtfBBc-.f5677eb2.woff ├── KFOmCnqEu92Fr1Mu4mxM.f1e2a767.woff ├── flUhRq6tzZclQEJ-Vdg-IuiaDsNa.4d73cb90.woff ├── flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.0383092b.woff2 ├── ionicons.eot ├── ionicons.svg ├── ionicons.ttf ├── ionicons.woff ├── materialdesignicons-webfont.d8e8e0f7.woff └── materialdesignicons-webfont.e9db4005.woff2 ├── icon.png ├── img ├── hero-background.png └── hero-image.png ├── index.html ├── js ├── 144.36e4dd28.js ├── 254.3e4a3252.js ├── 665.e7cdfcdd.js ├── 842.c344dabf.js ├── 85.1db80424.js ├── 890.065c7545.js ├── active.js ├── app.76009145.js ├── bootstrap.min.js ├── chunk-common.4e59ed1c.js ├── jquery-3.3.1.min.js ├── plugins.js ├── popper.min.js └── vendor.52055a46.js ├── logo-collapsed.png ├── logo.png ├── mstile-150x150.png ├── robots.txt ├── safari-pinned-tab.svg ├── site.webmanifest ├── style.css ├── update-frame └── index.html └── update └── index.html /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | ko_fi: willyjl 2 | custom: ["https://paypal.me/willyjl1"] -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .thumbs.db 3 | node_modules 4 | 5 | # Quasar core related directories 6 | .quasar 7 | dist 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | 14 | # Editor directories and files 15 | .idea 16 | *.suo 17 | *.ntvs* 18 | *.njsproj 19 | *.sln 20 | 21 | # Log files of my broken-af editor 22 | log.txt 23 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "frontend/flipperzero-protobuf"] 2 | path = frontend/flipperzero-protobuf 3 | url = https://github.com/flipperdevices/flipperzero-protobuf.git 4 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "dbaeumer.vscode-eslint", 4 | 5 | "editorconfig.editorconfig", 6 | "johnsoncodehk.volar", 7 | "wayou.vscode-todo-highlight" 8 | ], 9 | "unwantedRecommendations": [ 10 | "octref.vetur", 11 | "hookyqr.beautify", 12 | "dbaeumer.jshint", 13 | "ms-vscode.vscode-typescript-tslint-plugin" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.bracketPairColorization.enabled": true, 3 | "editor.guides.bracketPairs": true, 4 | "editor.formatOnSave": false, 5 | "editor.defaultFormatter": "dbaeumer.vscode-eslint", 6 | "editor.codeActionsOnSave": [ 7 | "source.fixAll.eslint" 8 | ], 9 | "eslint.validate": [ 10 | "javascript", 11 | "javascriptreact", 12 | "typescript", 13 | "vue" 14 | ], 15 | "[json]": { 16 | "editor.defaultFormatter": "vscode.json-language-features" 17 | }, 18 | "[xml]": { 19 | "editor.defaultFormatter": "redhat.vscode-xml" 20 | }, 21 | 22 | } 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
{{ updateStage }}
46 |Waiting for Flipper...
36 | 37 |
41 | Your browser doesn't support WebSerial API.
42 | For better experience we recommend using Chrome for desktop.
43 | Full list of supported browsers
44 |
8 | Firmware: 9 | {{ info.firmware_version !== 'unknown' ? info.firmware_version : info.firmware_commit }} {{ info.firmware_build_date }} 10 |
11 |12 | SD card: 13 | {{ sdCardUsage }} 14 |
15 |16 | Databases: 17 | {{ info.storage_databases_present }} 18 |
19 |20 | Radio FW: 21 | {{ info.radio_alive !== false ? info.radio_stack_major + '.' + info.radio_stack_minor + '.' + info.radio_stack_sub : 'corrupt' }} {{ radioStackType }} 22 |
23 |Waiting for Flipper...
59 |$1
')
100 | changelog = changelog.replaceAll(/^\s*\[\/\/\]:.*?(\r?\n)+/gm, '')
101 | changelog = changelog.trimEnd().replaceAll(/\r?\n/g, '\n