diff --git a/README.md b/README.md index ddcf23f259..13da10b0ae 100644 --- a/README.md +++ b/README.md @@ -270,6 +270,7 @@ and which gives information about the app for the Launcher. // 'notify' - provides 'notify' library for showing notifications // 'locale' - provides 'locale' library for language-specific date/distance/etc // (a version of 'locale' is included in the firmware) + // 'defaultconfig' - a set of apps that will can be installed and will wipe out all previously installed apps "tags": "", // comma separated tag list for searching // common types are: // 'clock' - it's a clock diff --git a/apps/confthyttan/ChangeLog b/apps/confthyttan/ChangeLog new file mode 100644 index 0000000000..77d527619d --- /dev/null +++ b/apps/confthyttan/ChangeLog @@ -0,0 +1,6 @@ +0.01: New App! +0.02: update to my current preferences. +0.03: update app list +0.04: change app name "mysetup" -> "anotherconf" +0.05: remove apps that are not "core" to the experience. +0.06: change name "anotherconf" -> "confthyttan" diff --git a/apps/confthyttan/README.md b/apps/confthyttan/README.md new file mode 100644 index 0000000000..e9b952c822 --- /dev/null +++ b/apps/confthyttan/README.md @@ -0,0 +1,31 @@ +# Thyttan's Default Config + +A different default set of apps and configurations. Brings many quality of life improvements. Opinionated based on the creators taste. Read more below before installing. + +## Usage + +Before installing do this: + +1. Backup your current setup (via the "More..." tab of the App Loader) so you can restore it later if you want. +2. Install this app (you'll be prompted about all data being removed from your Bangle) +3. Try it out, switch out apps to your favorites and tweak to your liking! + +## Features + +There will not be a trace of a "Thyttan's Default Config" app on your watch after installation. Only the apps it installed and the configurations. + +On the clock face: +- Swipe right on the screen to open the launcher (Desktop Launcher) - or press the hardware button. +- Swipe left to open a flashlight app. +- Swipe up to open the messages. +- Swipe down for quick access to music and podcast controls. + - (Do a subsequent left or right swipe to enter the listed apps) +- (Check out the "Quick Launch" app readme for more info) + +## Requests + +Add to the espruino/BangleApps issue tracker and mention @thyttan for bug reports and suggestions. + +## Creator + +thyttan diff --git a/apps/confthyttan/app.png b/apps/confthyttan/app.png new file mode 100644 index 0000000000..24ff01b8a4 Binary files /dev/null and b/apps/confthyttan/app.png differ diff --git a/apps/confthyttan/autoreset.json b/apps/confthyttan/autoreset.json new file mode 100644 index 0000000000..18e94a2829 --- /dev/null +++ b/apps/confthyttan/autoreset.json @@ -0,0 +1 @@ +{"mode":0,"apps":[{"name":"Run+","src":"runplus.app.js","files":"runplus.info,runplus.app.js,runplus.img,runplus.settings.js,runplus_karvonen"}],"timeout":10} \ No newline at end of file diff --git a/apps/confthyttan/backswipe.json b/apps/confthyttan/backswipe.json new file mode 100644 index 0000000000..aa66bd5344 --- /dev/null +++ b/apps/confthyttan/backswipe.json @@ -0,0 +1 @@ +{"mode":0,"apps":[{"name":"Calculator","src":"calculator.app.js"},{"name":"SleepLog","src":"sleeplog.app.js"},{"name":"Messages","sortorder":-9,"src":"messagegui.app.js"},{"name":"Messages","sortorder":-9,"src":"messagegui.app.js","files":"messagegui.info,messagegui,messagegui.app.js,messagegui.new.js,messagegui.boot.js,messagegui.img"}],"standardNumSwipeHandlers":5,"standardNumDragHandlers":1} diff --git a/apps/confthyttan/dtlaunch.json b/apps/confthyttan/dtlaunch.json new file mode 100644 index 0000000000..5417cca3b9 --- /dev/null +++ b/apps/confthyttan/dtlaunch.json @@ -0,0 +1 @@ +{"showClocks":true,"showLaunchers":true,"direct":false,"swipeExit":false,"timeOut":"15s"} \ No newline at end of file diff --git a/apps/confthyttan/edgeclk.settings.json b/apps/confthyttan/edgeclk.settings.json new file mode 100644 index 0000000000..bdf875621c --- /dev/null +++ b/apps/confthyttan/edgeclk.settings.json @@ -0,0 +1 @@ +{"buzzOnCharge":true,"monthFirst":true,"twentyFourH":true,"showAmPm":false,"showSeconds":true,"showWeather":false,"stepGoal":10000,"stepBar":true,"weekBar":true,"mondayFirst":true,"dayBar":true,"redrawOnStep":false} diff --git a/apps/confthyttan/fastload.json b/apps/confthyttan/fastload.json new file mode 100644 index 0000000000..beef5d0cc5 --- /dev/null +++ b/apps/confthyttan/fastload.json @@ -0,0 +1 @@ +{useAppHistory:true,disregardQuicklaunch:true,hideLoading:true} \ No newline at end of file diff --git a/apps/confthyttan/lightswitch.json b/apps/confthyttan/lightswitch.json new file mode 100644 index 0000000000..818aa6b07a --- /dev/null +++ b/apps/confthyttan/lightswitch.json @@ -0,0 +1 @@ +{"colors":"011","image":"heart","touchOn":"always","oversize":7,"dragDelay":500,"minValue":0.01,"tapToLock":false,"unlockSide":"","tapSide":"","tapOn":"always","tOut":2000,"minFlash":0.2,"isOn":true,"value":0.9109} \ No newline at end of file diff --git a/apps/confthyttan/messages.settings.json b/apps/confthyttan/messages.settings.json new file mode 100644 index 0000000000..88efa60827 --- /dev/null +++ b/apps/confthyttan/messages.settings.json @@ -0,0 +1 @@ +{vibrateTimeout:10,vibrate:":",vibrateCalls:":::",flash:false} \ No newline at end of file diff --git a/apps/confthyttan/metadata.json b/apps/confthyttan/metadata.json new file mode 100644 index 0000000000..5fd18c7e90 --- /dev/null +++ b/apps/confthyttan/metadata.json @@ -0,0 +1,68 @@ +{ "id": "confthyttan", + "name": "Thyttan's Default Config", + "version":"0.06", + "description": "A different default set of apps and configurations. Brings many quality of life improvements. Opinionated based on the creators taste. Read more below before installing.", + "icon": "app.png", + "type": "defaultconfig", + "tags": "system,configuration,config,anotherconfig,thyttan", + "supports" : ["BANGLEJS2"], + "readme": "README.md", + "dependencies" : { + "sched":"app", + "kbmulti":"app", + "messageicons":"app", + "widmsggrid":"app", + "msgwakefup":"app", + "delaylock":"app", + "notify":"app", + "health":"app", + "widminbate":"app", + "podadrem":"app", + "spotrem":"app", + "android":"app", + "widanclk":"app", + "backswipe":"app", + "torch":"app", + "calculator":"app", + "widbt_notify":"app", + "smpltmr":"app", + "clkinfostopw":"app", + "runplus":"app", + "dtlaunch":"app", + "quicklaunch":"app", + "kineticscroll":"app", + "alarm":"app", + "recorder":"app", + "agenda":"app", + "edgeclk":"app", + "autoreset":"app", + "chargent":"app", + "setting":"app", + "fastload":"app", + "boot":"app", + "ateatimer":"app", + "drained":"app" + }, + "storage": [ + {"name":"backswipe.json", + "url":"backswipe.json"}, + {"name":"autoreset.json", + "url":"autoreset.json"}, + {"name":"dtlaunch.json", + "url":"dtlaunch.json"}, + {"name":"fastload.json", + "url":"fastload.json"}, + {"name":"quicklaunch.json", + "url":"quicklaunch.json"}, + {"name":"messages.settings.json", + "url":"messages.settings.json"}, + {"name":"widbt_notify.json", + "url":"widbt_notify.json"}, + {"name":"recorder.json", + "url":"recorder.json"}, + {"name":"edgeclk.settings.json", + "url":"edgeclk.settings.json"}, + {"name":"setting.json", + "url":"setting.json"} + ] +} diff --git a/apps/confthyttan/quicklaunch.json b/apps/confthyttan/quicklaunch.json new file mode 100644 index 0000000000..4edbb083bf --- /dev/null +++ b/apps/confthyttan/quicklaunch.json @@ -0,0 +1 @@ +{lapp:{name:"Show Launcher",sortorder:-12,src:"no source"},rapp:{name:"torch",type:"app",sortorder:-11,src:"torch.app.js"},uapp:{name:"Messages",sortorder:-9,src:"messagegui.app.js"},dapp:{name:"Extension",type:"app",sortorder:-11,src:"quicklaunch.app.js"},tapp:{name:""},dlapp:{name:"PA Remote",src:"podadrem.app.js"},drapp:{name:"Remote for Spotify",src:"spotrem.app.js"},duapp:{name:""},ddapp:{name:"Extension",type:"app",sortorder:-11,src:"quicklaunch.app.js"},dtapp:{name:""},ddlapp:{name:"Alarms",src:"alarm.app.js"},ddrapp:{name:"Run+",src:"runplus.app.js"},dduapp:{name:""},dddapp:{name:"Agenda",src:"agenda.app.js"},ddtapp:{name:""},rlapp:{name:""},rrapp:{name:""},ruapp:{name:""},rdapp:{name:""},rtapp:{name:""},trace:"dr"} diff --git a/apps/confthyttan/recorder.json b/apps/confthyttan/recorder.json new file mode 100644 index 0000000000..f598b41d25 --- /dev/null +++ b/apps/confthyttan/recorder.json @@ -0,0 +1 @@ +{recording:false,period:10,record:["gps","hrm","steps"],file:"recorder.log0.csv"} \ No newline at end of file diff --git a/apps/confthyttan/setting.json b/apps/confthyttan/setting.json new file mode 100644 index 0000000000..ece0c87edf --- /dev/null +++ b/apps/confthyttan/setting.json @@ -0,0 +1 @@ +{ble:true,blerepl:true,log:false,quiet:0,timeout:10,vibrate:true,beep:true,timezone:2,HID:false,clock:"edgeclk.app.js","12hour":false,firstDayOfWeek:1,brightness:0.5,options:{wakeOnBTN1:true,wakeOnBTN2:true,wakeOnBTN3:true,wakeOnFaceUp:false,wakeOnTouch:false,wakeOnTwist:false,twistThreshold:819.2,twistMaxY:-800,twistTimeout:1000,btnLoadTimeout:700},theme:{fg:65535,bg:0,fg2:65535,bg2:8,fgH:65535,bgH:31,dark:true},clockHasWidgets:true,launcher:"dtlaunch.app.js",touch:{x1:6,y1:14,x2:197,y2:178}} diff --git a/apps/confthyttan/widbt_notify.json b/apps/confthyttan/widbt_notify.json new file mode 100644 index 0000000000..fbcd97f76e --- /dev/null +++ b/apps/confthyttan/widbt_notify.json @@ -0,0 +1 @@ +{showWidget:true,buzzOnConnect:false,buzzOnLoss:false,hideConnected:false,showMessage:false,nextBuzz:30000} \ No newline at end of file diff --git a/apps/messagesoverlay/metadata.json b/apps/messagesoverlay/metadata.json index 26095eb33a..ba5f005c3c 100644 --- a/apps/messagesoverlay/metadata.json +++ b/apps/messagesoverlay/metadata.json @@ -15,6 +15,6 @@ {"name":"messagesoverlay.settings.js","url":"settings.js"}, {"name":"messagesoverlay.default.json","url":"default.json"} ], - "data": [{"name":"bthrm.json"}], + "data":[{"name":"messagesoverlay.json"}], "screenshots": [{"url":"screen_call.png"} ,{"url":"screen_message.png"} ] } diff --git a/bin/sanitycheck.js b/bin/sanitycheck.js index 086c2e551d..80f8abe24d 100755 --- a/bin/sanitycheck.js +++ b/bin/sanitycheck.js @@ -169,7 +169,7 @@ const APP_KEYS = [ const STORAGE_KEYS = ['name', 'url', 'content', 'evaluate', 'noOverwite', 'supports', 'noOverwrite']; const DATA_KEYS = ['name', 'wildcard', 'storageFile', 'url', 'content', 'evaluate']; const SUPPORTS_DEVICES = ["BANGLEJS","BANGLEJS2"]; // device IDs allowed for 'supports' -const METADATA_TYPES = ["app","clock","widget","bootloader","RAM","launch","scheduler","notify","locale","settings","textinput","module","clkinfo"]; // values allowed for "type" field +const METADATA_TYPES = ["app","clock","widget","bootloader","RAM","launch","scheduler","notify","locale","settings","textinput","module","clkinfo","defaultconfig"]; // values allowed for "type" field - listed in README.md const FORBIDDEN_FILE_NAME_CHARS = /[,;]/; // used as separators in appid.info const VALID_DUPLICATES = [ '.tfmodel', '.tfnames' ]; const GRANDFATHERED_ICONS = ["s7clk", "snek", "astral", "alpinenav", "slomoclock", "arrow", "pebble", "rebble"]; @@ -207,6 +207,10 @@ apps.forEach((app,appIdx) => { if (!app.name) ERROR(`App ${app.id} has no name`, {file:metadataFile}); var isApp = !app.type || app.type=="app"; var appTags = app.tags ? app.tags.split(",") : []; + /*if (appTags.some(tag => tag!=tag.trim())) + WARN(`App ${app.id} 'tag' list contains whitespace ("${app.tags}")`, {file:metadataFile}); + if (appTags.some(tag => tag!=tag.toLowerCase())) + WARN(`App ${app.id} 'tag' list contains uppercase ("${app.tags}")`, {file:metadataFile});*/ if (app.name.length>20 && !app.shortName && isApp) ERROR(`App ${app.id} has a long name, but no shortName`, {file:metadataFile}); if (app.type && !METADATA_TYPES.includes(app.type)) ERROR(`App ${app.id} 'type' is one one of `+METADATA_TYPES, {file:metadataFile}); @@ -296,7 +300,8 @@ apps.forEach((app,appIdx) => { if (INTERNAL_FILES_IN_APP_TYPE[app.type].includes(file.name)) fileInternal = true; } - allFiles.push({app: app.id, file: file.name, internal:fileInternal}); + if (!app.type=="defaultconfig") + allFiles.push({app: app.id, file: file.name, internal:fileInternal}); if (file.url) if (!fs.existsSync(appDir+file.url)) ERROR(`App ${app.id} file ${file.url} doesn't exist`, {file:metadataFile}); if (!file.url && !file.content && !app.custom) ERROR(`App ${app.id} file ${file.name} has no contents`, {file:metadataFile}); var fileContents = ""; @@ -494,7 +499,7 @@ while(fileA=allFiles.pop()) { if (isGlob(nameA)||isGlob(nameB)) ERROR(`App ${fileB.app} ${typeB} file ${nameB} matches app ${fileA.app} ${typeB} file ${nameA}`); else if (fileA.app != fileB.app && (!fileA.internal) && (!fileB.internal)) - WARN(`App ${fileB.app} ${typeB} file ${nameB} is also listed as ${typeA} file for app ${fileA.app}`); + WARN(`App ${fileB.app} ${typeB} file ${nameB} is also listed as ${typeA} file for app ${fileA.app}`, {file:APPSDIR_RELATIVE+fileB.app+"/metadata.json"}); } }) } diff --git a/core b/core index bf08b48483..3ec8e289a2 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit bf08b484830ef4e811faf67ec663ebf839b5d09b +Subproject commit 3ec8e289a26a545d0d0c50f6945978584fb3d7f8 diff --git a/typescript/types/info.d.ts b/typescript/types/info.d.ts index c305b02612..21014ff8fc 100644 --- a/typescript/types/info.d.ts +++ b/typescript/types/info.d.ts @@ -14,4 +14,4 @@ type AppInfo = { type AppType = "app" | "clock" | "widget" | "module" | "bootloader" | "settings" | "clkinfo" | "RAM" | "launch" | "textinput" | "scheduler" | - "notify" | "locale"; + "notify" | "locale" | "defaultconfig";