2018-08-08 Florian Forsterapp.yaml: Set api_version "go1". master
2018-02-07 Florian ForsterRe-enable signature checking.
2018-02-05 Florian ForsterPackage fitbit: Revoke the access token in addition...
2018-02-05 Florian ForsterPackage gfit: Revoke the access token in addition to...
2018-02-04 Florian ForsterPackage fitbit: Fix parsing of sleep data.
2018-02-04 Florian ForsterMerge remote-tracking branch 'origin/master'
2018-02-04 Florian ForsterPackage gfit: Add a list of activities.
2018-02-04 Florian ForsterLitter the sleep code with debug log entries.
2018-02-02 Florian ForsterPackage fitbit: Return errors instead of logging them.
2018-02-02 Florian ForsterPackages app and gfit: Unify HTTP retries with retry...
2018-02-02 Florian ForstersleepNotification(): Actually add converted sleep stage...
2018-02-01 Florian ForsterPackage fitbit: Merge the "Data" and "ShortData" sleep...
2018-02-01 Florian ForsterPackage gfit: Change Activity.Type to be a string.
2018-02-01 Florian ForsterPackage gfit: Change handling of non-incremental data...
2018-02-01 Florian ForsterAvoid taking a pointer of the loop variable.
2018-02-01 Florian ForsterDisable signature verification due to a problem on...
2018-02-01 Florian ForsterPackage fitbit: Log signatures on failure.
2018-02-01 Florian ForsterImplement sleepNotification() to handle sleep notificat...
2018-02-01 Florian ForsterPackage fitbit: Pass date as time.Time, remove location...
2018-01-31 Florian ForsterPackage fitbit: Implement Sleep() to read sleep logs.
2018-01-31 Florian ForsterPackage fitbit: Add documentation.
2018-01-31 Florian ForsterPackage fitbit: Handle errors from ioutil.ReadAll(...
2018-01-31 Florian ForsterPackage fitbit: Fix unsubscribing.
2018-01-31 Florian ForsterfitbitDisconnectHandler(): Add call to c.DeleteToken().
2018-01-31 Florian ForsterAlways print an error when reporting an "internal serve...
2018-01-31 Florian ForsterPackage app: Improve error message.
2018-01-31 Florian ForsterPackage fitbit: Implement UnsubscribeAll() and ListSubs...
2018-01-31 Florian ForsterConnect handlers: don't call {fitbit,gfit}.NewClient().
2018-01-30 Florian ForsterPackage fitbit: Append the collection type to the subsc...
2018-01-30 Florian ForsterLog notification payloads to debug logs.
2018-01-30 Florian ForsterReplace CSRF token with tokens based on the user's ID.
2018-01-30 Florian ForsterPackage app: Load the ID with the rest of the user...
2018-01-30 Florian ForsterDisconnect handler: don't print success message after...
2018-01-30 Florian ForsterPackage fitbit: Ignore 404 (Not Found) errors when...
2018-01-30 Florian ForsterUnsubscribe from Fitbit subscriptions individually.
2018-01-30 Florian Forstertemplates/main.html: Fix login link.
2018-01-30 Florian ForsterAdd test that is parsing templates and complains about...
2018-01-30 Florian Forstertemplates/navbar.html: Fix template syntax.
2018-01-30 Florian Forstertemplates/loggedin.html: s/endf/end/
2018-01-30 Florian ForsterImplement a /login handler.
2018-01-30 Florian ForsterUse html/template to generate HTML output.
2018-01-30 Florian ForsterImplement Fitbit and Google Fit disconnect handlers.
2018-01-30 Florian ForsterPackage gfit: Implement Client.DeleteToken().
2018-01-30 Florian ForsterPackage fitbit: Implement Client.Unsubscribe() and...
2018-01-30 Florian ForsterPackage app: Implement User.DeleteToken() and User...
2018-01-30 Florian ForsterImport templates.
2018-01-30 Florian ForsterAdd static assets.
2018-01-29 Florian ForsterPackage gfit: Retry failing API calls.
2018-01-29 Florian ForsterhandleNotification(): Fix format string.
2018-01-29 Florian ForsterAdd warning message on Fitbit signature mismatch.
2018-01-29 Florian ForsterPackages fitbit and gfit: Initialize oauth2.Config...
2018-01-29 Florian ForsterDon't use context.Background().
2018-01-29 Florian ForsterRead runtime configuration from datastore.
2018-01-28 Florian ForsterRename the "gfitsync" package to "kraftakt".
2018-01-28 Florian ForsterPackage gfit: Unify debug messages for easier reading.
2018-01-28 Florian ForsterPackage gfit: Create the "activity segment" data source.
2018-01-28 Florian ForsterPackage gfit: Improve Create error message.
2018-01-28 Florian ForsterWarn about unexpected notification types.
2018-01-28 Florian ForsterFix parsing of activity times.
2018-01-28 Florian ForsterUnify subscription calls.
2018-01-26 Florian ForsterPackage fitbit: Don't treat Conflict (409) as an error.
2018-01-25 Florian ForsterAlso subscribe to the "sleep" Fitbit collection.
2018-01-24 Florian ForsterPackage gfit: Return immediately when no activities...
2018-01-24 Florian ForsterDefer wg.Done().
2018-01-24 Florian ForsterPackage gfit: Add debug output to SetActivities().
2018-01-24 Florian ForsterImplement exporting of activities.
2018-01-24 Florian ForsterPackage gfit: Implement SetActivities().
2018-01-24 Florian ForsterPackage fitbit: Add the ActivityParentName, LastModifie...
2018-01-22 Florian ForsterPackage gfit: Check return value of readCumulative...
2018-01-22 Florian ForsterPackage gfit: Include the DataStreamName in the DataStr...
2018-01-22 Florian ForsterCall ActivitySummary() and Profile() concurrently.
2018-01-22 Florian ForsterReturn errs only if it contains at least one error.
2018-01-22 Florian ForsterPackage fitbit: ActivitySummery(): Log full response.
2018-01-22 Florian ForsterPackage app: Check all fields of the OAuth token for...
2018-01-22 Florian ForsterWrite Google Fit entries concurrently.
2018-01-22 Florian ForsterPackage app: Add mutex to persistingTokenSource.
2018-01-16 Florian ForsterImplement distance conversion.
2018-01-16 Florian ForsterFixup: Pass RestingHeartRate to SetHeartRate().
2018-01-16 Florian ForsterPackage gfit: Calculate "average" heart rate.
2018-01-16 Florian ForsterPackage fitbit: Don't URL-decode Fitbit's signature.
2018-01-16 Florian ForsterImplement mapping of heart rate zones.
2018-01-16 Florian ForsterRebrand as "Kraftakt".
2018-01-15 Florian ForsterRefactor writing of step values via the generic methods.
2018-01-15 Florian ForsterImplement storing of calories expended.
2018-01-13 Florian ForsterPackage gfit: Steps: Calculate diff to previously store...
2018-01-12 Florian ForsterPackage fitbit: Implement the Profile() method.
2018-01-12 Florian ForsterPackage gfit: API fixes.
2018-01-11 Florian ForsterWrite step count summary to Google Fit.
2018-01-11 Florian ForsterPackage gfit: Implement initial client code for Google...
2018-01-11 Florian ForsterPackage app: Wrap oauth2.TokenSource to ensure datastor...
2018-01-11 Florian ForsterPackage fitbit: Update RefreshToken in Datastore after...
2018-01-10 Florian ForsterPackage fitbit: Fix activity summary URL.
2018-01-10 Florian ForsterSmall cleanup.
2018-01-10 Florian ForsterPackage app: Add email address to User object.
2018-01-10 Florian ForsterMove more logic into the "fitbit" and (new) "app" packages.
2018-01-10 Florian ForsterMore trial-and-error fixes.
2018-01-10 Florian ForsterImprove user visible status.
2018-01-10 Florian ForsterCheck status code when calling the subscription API.
2018-01-10 Florian ForsterRemove query string when redirecting user.
2018-01-10 Florian ForsterInitial commit.