Technical Changelog
2024-03-21
Improvements to spaced-repetition screens - Adding Notes header to spaced-repetition screens - Using textarea that expand (#133) - Input boxes for Add note span the width of the screen - Clearer second action buton to return to View all notes (#222) - On mobile you can tap to flip between note / flashcard on remind screenPR 555 Commit 4bab553
2024-03-19
- Moved changelog into hugo/assets/data - Updated .gitignore - Updated exclude list for syncing content via rsyncPR 553 Commit be85bc1
2024-03-19
- Updated hugo to v0.124.0 - Moved all data into assets/data and using resources.Get (hugo) - Static site generation is allowed to request more memory (#551, #455) - Removing content from static site generation once built. Resolves #551, #455PR 552 Commit b4287e5
2024-03-06
- Frontend support for pricing.html - Only allow purchase of tier if not already in the userInfo tiers - Running production on 1 pod for now - Openapi updated for userInfo response to include tiers - Patching tierInfo is now an object user.EventUserPreferencePatchTierInfo Resolves #437PR 502 Commit 076a719
2024-02-26
Tidying the garden - Using echo helper for testing endpionts - Removing uuid.User - Internally using UserUUID as a string Resolves #532 and #507PR 538 Commit 9cfbca4
2024-02-24
- When purchasing a tier, the tier is added to the user info and the system is tier aware, for different functionality within the product - Resolves Move all writing to userPreferences to event handler #515 - Fixes issues in rebuild handler crashing everytime we go in realtime - Resolves SetDailySettings is missing service test #416 - Resolves On save display_name trigger an event in user_info PATCH #182 - Resolves Move from Unix to UnixMilli #520 - Resolves Replace funk.Contains( to use slices.Contains where possible #518 - Replacing string grant for ActionGrant - Sent Correction events for missing display name change events - Sent correction events for deleting users - Reducing ingress looks up for shared domains when checking expiring ssl certificates - Updated to go 1.21 and fixed code changes - Updated dockerfile to alpine3.19 - Updated sqlite 3.45PR 516 Commit 6dfd66a
2023-12-03
- Usage stats add to userinfo endpoint. Will be used when we bring tiers online, it will help track free tier and when to trigger upgrade paths. - Moved all tests to use ginkgo/v2. - Improved testing of raw events with in memory sqlite and nats KeyValuePR 509 Commit fe813f1
2023-11-27
Improvements to user experience - Add overtime allows the user to interact now - Via a list, practice typing now works - Better SEO on Integrated Read Write Repeat - Changed a few more sentences referencing entry to reference note instead Resolves #503PR 504 Commit ad7c8c5
2023-11-23
- Changed the frontpage to focus more on Notes and tools #487 - Added Mission statement (#473) - Content can have custom h1 tag to help explain the page / screen / value. - Content can customise metadata fields keywords, description and robot. - Learnalist Notes replaces the "brain + muscle" and we use the logo from the app "Add Remind Repeat". - Toolbox overview page #486 - Adding a list to Notes, has better support for adding per row. - Improved UX on tool "Read Write Repeat - integrated" (/toolbox/read-write-repeat-v2.html)PR 492 Commit 5e8c427
2023-11-22
Fixes issue where accessing jetstream.KeyValue store did not fail fatally when an error occurred, affecting main api and spaced repetition activity service. Resolves #500.PR 501 Commit 4456814
2023-11-22
Improvements to payment + documentation - Payment includes the same metadata in payment_intent as found in checkout session. - Improved developer documentation around working with slideshow creation locally. - Experimental code to listen to changes to srs or lists and store the latest version in kvPR 497 Commit 39e38e6
2023-11-20
Adding tier concept to payments - Added database debugging to the monitoring document - New payment endpoint "/payments/tier/{tier}/stripedata " that given a tier returns prices - Testing against sqlite now uses sqlite_master to clear up tables - Upgraded stripe library to 76 - Webhook endpoint for stripe is specific now /payments/webhooks/stripe Resolves #493PR 494 Commit 61bfcd3
2023-11-09
- Adding robots.txt - Redirecting learnalist.com, www.learnalist.com and www.learnalist.net to learnalist.net - All http redirected to https - Moving from 308 to 301 to tame the robots when interacting with unjumble page Resovles #489PR 490 Commit d8cead2
2023-11-07
- New endpont /spaced-repetition/stats/:uuid to provide stats related to interacting with spaced repetition - Fixed issue where daily reminder was broken once daylight savings has finished. - When a FCM token is no longer valid, event.MobileDeviceRemove event is triggered. - Upgraded Nats to 2.10.1 and using creds on all services - Upgraded Stan to 0.25.5 - Upgraded to golang 1.21 - Upgraded hugo to 0.119 - Upgraded sqlite to 3.43.1 - Upgraded openapitools/openapi-generator-cli to 7.1.0-SNAPSHOT - Using golang slices for Contains - NewEchoHTTPServer encapsulates server setup, making it slightly easier to reuse - Moved from ioutil.ReadAll to io.ReadAllPR 477 Commit 14ab9f0
2023-08-19
When fcm token is expired or not valid, it only removes the mobile device with that token. Resolves #475PR 478 Commit ff0d0ac
2023-08-19
Spaced Repetition Remind screen - On flip, show the meaning - "Practice Typing": Adding a button to give the user the ability to practice typing as a form of active learning, via practice and repetition Resolves #471PR 472 Commit 4eaf1eb
2023-07-04
- Removing login_redirect from the query string Toolbox Plank Stats V2 - If logged in and plank stats shared, will show the link to share with people (#452) - Stats Summary stands out more with a sublte background Plank - Fixed bug: If the user is logged in, the plank share settings will be used (#451) Fixes #451, #452. Removes the need for #464.PR 470 Commit ccd5a59
2023-07-04
Toolbox Read Write Repeat Touching the screen when in typing mode will trigger the keyboard to appear on a mobile browserPR 469 Commit 8ee150a
2023-07-03
# What - Metrics-server is now under kustomize (restarting k3s seems to bring back an older version) - textarea + input now have a border again Static Site - compling refers to css not the framework On spaced repetition overview - you are now able to play unjumble from any item - when deleting an entry, you will be asked to confirm - viewing the json is now reachable by clicking a button - you are able to practice typing from any item via Read Write Repeat Toolbox Read Write Repeat - The typing experince is better - Typing works on mobile for both v1 and v2 - Accepts a query parameter practice to start typing Toolbox Unjumble - Pretty urls now redirect to /intro if not valid on the server side. Should fix issues with bots endlessly crawling the pagePR 468 Commit adf2bee
2023-05-26
- Moving to openapi lib generated via javascript - Using esbuild to build js + css for everything except the browser import and play - tools.json comes from make-toolbox - make-toolbox is source of truth for all spa and shared javascript. - Moved from getApiServer -> getServer - Using tailwind on the link component, to show it is possiblePR 445 Commit ea5cf5a
2023-05-09
- On /toolbox/read-write-repeat-v2.html, link to the list being practiced - Removed web component for the interact-menu, it is now part of the list type / kind entry file - Removed interact menu from hugoPR 438 Commit 2f9c9f8
2023-04-03
- Export slideshow as a pdf, list kind v7 - Export slideshow as a video, list kind v8 - Fix getting user by token, if not found return not found - Remove unused eventlogPubSubListener from event - End to End tests support tls insecure - Fix end to end log per, crashed if Do error'd - Generating openapi yaml flie now uses docker - System created list will silently fail if list fails to validate - Moved a few things from the old k8s folder over into the kustomize base or production - Updated go.mod Resolves #406PR 407 Commit 3339b4a
2023-03-29
- e2e tests run much better against a cluster now - GetUserUUIDByToken returns not found if record missing - TriggeredBy is using const - Replace ioutil -> io or os - Static-site is its own deployment - Static-site is using a queuedSubscriber now - Static-site will trigger a hugo rebuild ever x milliseconds, disconnecting the writing of new records and building the site - Removing ingress for lal01.learnalist.net - Assets have their own endpoint to set max body - Mimetype detection using lib as mp4 was not getting picked upPR 417 Commit 86d63b8
2023-03-10
- Updated golang to 1.20 - Updated go packages - Updated alpine to 3.17 - Updated nats-streaming to 0.25.3 - Improved docs on end-to-end testingPR 414 Commit f9bb17d
2023-01-30
Better handling of when to dripfeed the next item in the list. The system is now aware of what item needs to be interacted with before triggering a new item to be added. This will result in not being fed too many new entries at once.PR 396 Commit c305d64
2023-01-30
- Frontend is using openapi with v4, for now - Added kind when we create a list - Added feedback on delete or reset spaced repetition itemPR 402 Commit 37836f0
2023-01-15
Adding spaced repetition entry via dripfeed now sets created to be based on when the event happened. Resolves #398.PR 399 Commit 33799d2
2023-01-15
- Linking from "My lists" (https://learnalist.net/my-lists.html) to Spaced repetition (https://learnalist.net/spaced-repetition.html) - Able to delete an entry on https://learnalist.net/spaced-repetition.html - Able to reset an entry for learning on https://learnalist.net/spaced-repetition.html - List kind v2 now has a link to unjumble if interact is enabledPR 397 Commit d4ea48c
2022-12-12
- Updated openapi to match server changes to the delete space repetition entry which landed in #371. - Updated openapi to match server for patching user info (landed via #170 and #140). - Smoke tests for user use openapiv6 :).PR 392 Commit 38e27ed
2022-11-30
- Fixed bug in openapi clients, nesting the data structure - Added optional hash field to the image item Follow on from #368PR 390 Commit 3e6645e
2022-11-20
- Fixed signalling entry of V5 or V6 has been viewed (Resolves #387) - Fixed an issue in practice list creation / update where v2 or v6 would not show the correct data if show = toPR 388 Commit 1db9ee7
2022-11-17
Supporting images in v1 and v2 lists v1 with image = v5 v2 with image = v6 More detail openapi - Added v5 list type (Simple but with image data) - Added v6 list type (FromTo but with image data) - Added AlistItemMeta to openapi - Added AlistItemEarthPosition to openapi - Added kind to top level of alist, it will be set based on info.type - Fixed openapi to support different list types based on the kind - Fixed openapi to support different list item types in spaced repetition - Creation of go code via v6 of [openapi generator](https://github.com/OpenAPITools/openapi-generator/) e2e - Added e2e client for openapiv6 server - Delete plank returns 200 and a message - Delete challenge returns 200 and a message - Delete daily settings returns 200 and a message - Fixed race condition in jqquery Resolves #368PR 371 Commit 1f52636
2022-11-17
Upgrading go + docker + hugo - Upgrading to go 1.19 - Updating hugo to 0.105 - Updating alpine to 3.16 - Using golang 1.19PR 384 Commit 72ab70e
2022-10-24
- Titles are wrapped in single quote to play nice with yaml - Description is wrapped in single quote to play nice with yaml Fixes #363PR 366 Commit 24eb544
2022-06-28
- my-lists.html will redirect to the users specific lists - Via my-lists page it is now possible to filter the lists - Via my-lists page you are now able to click to edit lists you have write or owner access to (#291) - If no lists, present a nice call to action (#92) - Adjusted the header of all templates to align the left and the right side Resolves #92, #291.PR 352 Commit 5be35c3
2022-06-20
- /alists/* return no-cache - /unjumble/* return no-cache - Responding better to HEAD requests Resolves #343 (Clicking on documents cause them to be cached and not re-evaluated)PR 351 Commit 41f7ec9
2022-06-20
- Fixed some warnings around not handling cancel in smoke tests - Fixed warning in firefox to explicitly set the SameSite policy on the cookie Resolves #319PR 350 Commit 24e4c79
2022-06-17
Via /api/v1/spaced-repetition/viewed it is now possible to change any item. Resolves #347PR 349 Commit edb8b14
2022-06-17
- A command "tools massage alist-created" takes a particular input and produces a UPDATE sql command.PR 348 Commit 6efe9e5
2022-06-17
- When login via idp, if the redirect url is set, return them to that after login Resolves #282PR 344 Commit 79749fe
2022-06-16
- Adding ingress, to pipe from production to local dev, mostly for working with login via google | login via apple - Change golang config file via SERVER_CONFIG - New make commands to run api-servier, hugo and javascript separately - Document how to tunnel traffic from external cluster locally for developmentPR 346 Commit c14993e
2022-06-15
In the browser, we run javascript on an interval to make sure if the cookie expires we delete user info from local storage. Resolves #271PR 342 Commit dbaf618
2022-06-15
- Endpoints are now using repeatable middleware instead of specific skip logic - If cookie set and token is valid, we set-cookie with new expire time - All set-cookie are using UTC - Added smoke test for cookie setting - Fixed smoke test for login to delete user - Smoke Tests, all work when the host is not 127.0.0.1:1234 via LEARNALIST_SERVER. - Making e2e tests work with local cluster and cookies - /assets/ can be reached via the /api/v1/assets/ or via /assets/ Fixes #336PR 340 Commit b8cf3a8
2022-06-14
- When deleting a challenge, a new event is fired to the monolog. - Added e2e test for deleting the challenge and confirming the event is written to the monolog and static site topic Resolves #175PR 339 Commit 6eac59c
2022-06-14
- Fixed css and missing doctype on in frontpage layout - Fixed css and missing doctype on in user list layout - Fixed css and missing doctype on in public list layout - Added link to setup k8s in the readme - Support page now exists where a logged in user can give money to learnalist or buy access to create public lists (stripe integration, is online) (Resolves #236)PR 249 Commit 5cd7ed8
2022-06-10
- Adding resources (limit + cpu) - Moving learnalist deployment into learnalist.yaml and using clusterip (turns out we had nodeport set) By product of working on #236.PR 333 Commit ba4df44
2022-06-08
- Adding userinfo get response to openapi - Making nats read able to follow the logsPR 332 Commit bc64e20
2022-06-08
- Fixed cmd/tools/integration-tests.go:75:2: fmt.Println arg list ends with redundant newline - As a user I want the ability to restart the spaced learning for an item. Resolves #299. - Via spaced repetition viewed endpoint, we now support restart, signalling to restart the entry (uuid) spaced repetition journey from the beginning (level 0). - Via the web, clicking "sooner" now restarts the item for spaced learning.PR 302 Commit 40c1d75
2022-06-07
- Fix css purging to include :global - Fix jq filtering to actually filter if the filter fails to match - A custom router, to be sort of SPA but using pretty urls, something around # based, didn't sit well - Interactive play, unjumble items in a list. Starting with list type v2.PR 324 Commit 66a2a79
2022-06-02
- Using the durable name in nats subscribe helper function, meaning stan is now keeping track of the durable instead of defaulting to latest events. - Removing event reader from the cluster.PR 330 Commit f70cfab
2022-06-02
- Fix acl to include write access for creators (owners) of a list based on alist_kv. - New event InputAclAlistAccess, to capture the concept it is an input, might be the start of more. But we shall see. Resolves #326PR 328 Commit ea97b99
2022-05-31
- Mixing jq + sqlite to enhance searching of json objects, we register a custom_func allowing us to "jq_match" in sql to filter the object based on filters generated in the code or passed in via POST body. - Added include_system_lists paramter to alist/by/me - Added better handling of labels with spaces - Added post endpoint to handle raw jq filters - Better testing (unit + End to end) for /alist/by/me endpointPR 325 Commit 5d9a213
2022-05-28
- "Just One thing", a very opinionated todo list, allowing for one current item and the ability to have a "current view", look in #308 for more. - Fixed a url redirect in spaced repetition spa - When lookinng up current user, if it fails for network reasons it does not clear the user sessionPR 310 Commit 9c0ed86
2022-05-24
- Possible to collaborate on a list, by giving someone write access - Openapi documented share endpoints for request access - Openapi documented share endpoints to grant / revoke access - Able to grant or revoke write access to a list for a user - Access view, is aware of read and write requests - Improved test coverage around challenge endpoints - When acl entries are written, we now include a created timestamp - Via PUT, if the list is not found the model for saving will reject - run-static-site is now linked to dev_external.config - Fixed plank history not showing up in the browser Resolves #320.PR 321 Commit 7048d6c
2022-05-18
Creating / updating the toolbox list, if the source file doesn't exist, it will create the directories and write an empty file (Fixes #296)PR 309 Commit a262b18
2022-05-16
- Update node modules in hugo - Update node modules in js - Fix broken test which came in via #301PR 304 Commit a66b797
2022-05-16
- updating nats image to nats:2.8.2-alpine3.15 - updating stan image to nats-streaming:0.24.6-alpine3.15 - learning I am using on the fly pvc, wanting to pin it in dev cluster so it is easy to find - updating golang libraries for nats + stan - When setting up ingress, we wait for it to be ready before finishing - Upgrading hugo to 0.98 - e2e tests run in parallelPR 301 Commit 6a564ca
2022-05-14
Linting some kubernetes yaml files to make it clearer for future changes.PR 303 Commit e694014
2022-03-19
Single page application to make it easy to import tabbed data, create a list and add for spaced learning.PR 283 Commit edcb9e3
2022-03-19
- Using alpine:3:15 - Pin hugo to v0.95.0 and downloading the binary from githubPR 295 Commit d308de1
2022-03-18
- Frontpage has been re-worked to highlight the ios applications using learnalist.net - Links to the ios applications are in the correct feature pages - Update to use more recent version of sqlite, FOR IIF - Fix bug, "rebuild-static-site" includes all users, not just users with a list. - Restriction, creating a list only supports private if "public write access" has not been granted. - On my lists page, include lists the user has read access to - When list is shared with friends, the "no-access" has a call to action to request access if logged in - my lists are now updated when user has been granted or revoked access to a list - New, access overview page, currently scoped to lists and requests, to allow or deny access to list - When requesting read access, it is possible to send the owner a special link for your single read request - When deleting a list, if shared with friends, triggers an update to those users "my lists"PR 288 Commit dd68d9b
2022-01-31
Added created column to the alist_kv table, to make the system aware of when the list was first made. Resovles #286PR 290 Commit bf4a0ff
2021-12-12
- As a developer, improved an issue around css not being copied over to hugo (https://github.com/thgh/rollup-plugin-css-only/issues/40) - Fixed an inssue in the manifest-cleanup.sh where it was catching manifest keys when it was a substring of others. - Via shared.js we now reuse the same getCurrentUser. - Read Write Repeat Version 2 (lets build some muscle memory!) Building from https://learnalist.net/toolbox/read-write-repeat-v1.html, I wanted to create a version that interacts a little tighter with the spaced repetition section of the website. Via https://learnalist.net/toolbox/read-write-repeat-v2.html, same experiences a v1. Via https://learnalist.net/toolbox/read-write-repeat-v2.html#todaysPracticeList, show your current practice list, generated from using our spaced repetition tools. Via https://learnalist.net/toolbox/read-write-repeat-v2.html#personalSpacedRepetition, show your spaced repetition list and make it easier to pick from there to practice typing Via a public list (ie https://learnalist.net/toolbox/read-write-repeat-v2.html#uuid/ad573393-4898-5c23-9781-3f0caafd7734), able to pick a row to practice typing.PR 281 Commit f6534c7
2021-11-21
> Build practice lists, based on clicking sooner in the remind app ("viewed + decr") - remind service, now listens for spaced repetition viewed events to build practice lists based on when the user signals they want to be reminded later (action=decr). - make build-mocks, no longer builds mocks for NatsSubscriber, I reference #265. - "api service" / server, listens for system.list.save events and saves the list for the user and sets a flag to signify to the system it is created by the system and not the user - list modification endpoints now reject if the system created the list. - small test coverage improvment to github.com/freshteapot/learnalist-api/server/api/alist/sqlite Resolves #276.PR 277 Commit bbf13a5
2021-10-31
- DailyReminder events now know about plank_v1 and send titles and messages reflective of the app, to inspire or encourage. - GetReminders returns daily reminder settings based on user_id and app_identifier. - If you change your daily settings, then the activity for the day, is lost (this could be fixed in another issue) - Added logging around empty userUUID in the daily settings manager. Fixes #239, at least on the server side.PR 240 Commit aef4968
2021-10-31
- Fixing links in the reference sectiton on the-humbe-plank landing page. - Making it clear you need to be logged in, to see the plank stats via the websitePR 272 Commit c85fe29
2021-10-27
Adding link to "the humble plank" app in the Apple store. Resolves #257PR 270 Commit 05ae0c4
2021-10-25
- using go.1.17 - k3d v5 setting up k3s in docker - kustomise for staging (k3d locally) - Starting to kustomise for production - A little db building, to use kustomize to bring the sql files to the cluster in configmap - Nats with queuesubscribe (#266) -- Support running multiple versions of the api-server, from a nats point of view. I word it like this, as the sqlite file and html files will only work if both servers have access to the same folder. (READ will still be a problem on a k8s with more than 1 node that doesnt support Read Write Many RWX) -- Confirmed it worked, by running two api-servers and then the e2e-tests. -- The e2e tests confirmed I had problems moving to QueueSubscriber, it feels pretty damn good to see this and then see it work. Resolves #156 via #264PR 262 Commit 2148b1b
2021-06-25
- Support page for mobile humble plank app - Support page for mobile remind app - Better linking from welcome.html to the respective links above. - Able to run make develop with LAL_INTERFACE, to make it easier to work on a mac when not on wifi, ie via mobile internet Helps resolve #256PR 261 Commit 9879cf8
2021-04-07
- Adding link to Import and Play chrome extension - Tidying up the top level readmePR 248 Commit aa0b2fd
2021-04-03
- Browser extension "Import and Play" tries to make a list out of the vocabulary section of skills on duolingo.com (#241) - Server support for lists created with from.kind duolingo (#241) - Added first version copy for the browser extension "Select and Save" / "Add to 🧠+ 💪" - Add first version copy for the browser extension "Import and Play" - Creating a first version of a privacy policy based on Legalmattic from Automattic - share.js is only included if the template has js files to includePR 242 Commit 57af0df
2021-03-30
- Fix Granting or revoking users ability to create public lists via the command line (#230) - Using event.TopicMonolog everywhere - Improving the documentation around running e2e testsPR 238 Commit caf3930
2021-03-29
- Remove the "are you sure prompt" that is triggered before leaving the plank-stats-v1 page to loginPR 237 Commit ab8b666
2021-03-29
- Streamlining the process of creating single page apps, under "toolbox". - Adding language-pad to toolbox - Adding read-write-repeat to toolbox - Adding plank-stats to toolbox - Adding css to plank - Cleanup script to remove files that are not in the manifest_css.json or manifest_js.json on the server - When leaving plank stats page, ensure we remove any notifications - On visibility change we now use the same logic to filter checking for next spaced repetitionsPR 235 Commit 6511c76
2021-03-27
- Fixed a bug that was sending daily reminders to the wrong users devices (#233). - e2e test for the above issue, has shown me one way to hook into the log for more fine grained e2e testing. - Static site file rebuild, now batches the requests to protect a little from event herding.PR 234 Commit d6cb926
2021-03-20
- Spelling mistake on Android - Using "over time" instead of overtimePR 232 Commit 293e1e9
2021-03-20
- Landing page for remind app. - Landing page for humble plank app. - Page for technical-changelog and documented how to update it. - Samples are used in the hugo css build step to make sure we touch paths in different layouts. - Added sync-content option to makefile. - sync-site-assets will now rebuild js libraries from openapi before running.PR 231 Commit 44c4ab6
2021-03-20
- Update js dependencies in js and hugo - manifest_js and manifest_css have a base that is now copied to hugo - How we move js and css from js to hugo has changed a little Fixes #224PR 225 Commit 42e63a4
2021-03-14
- Only able to publish public lists if you have write access (#214). - Registering a new user allows for setting if they have write access for public lists (#214). - Notifying hugo of changes via events (#207). - Able to grant and revoke access to write public lists via the command line. - Challenges now trigger events to hugo for updating (#198 #199) - e2e openapi client records the requests, making it easier to see scope of coverage linked to the openapi document. Resolves #214 #207 #199 #198PR 215 Commit c3bf2fa
2021-03-14
Handling when entry has reached the highest spaced learning level. Fixes #218PR 219 Commit e3ba219
2021-03-07
- When saving a list from external source, we now check the suffix of the hostname for match. - Import and play has its own Spaced Repetition UI, decoupled from the website. - New extension to provide support for adding via context menu (works in both firefox and google out the box) Resolves #139PR 211 Commit 29e3a38
2021-03-05
- Clicking "Add meaning / definition" toggles checkbox and expose meaning box. Resolves #134PR 209 Commit 1c81a6d
2021-03-05
- Document how to use daily reminders api. - Better searching on auto generated api index. Resolves #200PR 208 Commit e2b118e
2021-03-05
- Login with appleID via web. - Login with appleID via idp rest endpoint. - Improved test coverage. - Document how to update idps to the "learnalist user uuid". Resolves #203PR 204 Commit 05f0fec
2021-02-22
- Add lists overtime for spaced repetition learning, via api and UI. - Improve developer experience around restarting nats - Fix issue where Rollback of transaction would have crashed due to tx being nil - Only show spaced repetition if the list has entries. Resolves #193PR 194 Commit 6bd5346
2021-01-15
- Fixes a crash in remind-manager. It was not running EVENTS = nats - GetReinders now returns array of tokens not just the first token to send message to.PR 196 Commit b719ec6
2021-01-10
- using mockery 2.5.1 to build our mocks - improved the server READMEPR 195 Commit 97ccb9d
2021-01-08
- Send a reminder to users with the mobile app. It is delayed by last_active, currently set to 5 minutes. Only sends once until further interaction from the user. - Api endpoint for app-settings, allowing to opt in or opt out for spaced repetition notifications via push. - A fix to remove a users spaced repetition entries when the user is deleted. - Cruedly checking to see if hugo, npm, go, and yq are installed. - Clicking on server information, returns the correct information. - Bump version of Hugo to 0.80.0 (#188) Resolves #188 #183PR 184 Commit d062e8a
2020-12-28
- Let two users add the same entry for spaced repetition learning. - Improve test coverage of spaced_repetition pkg. - e2e test to verify two users adding the same entry Resolves #185.PR 186 Commit 15e8b43
2020-12-21
- Brings reminder engine to learnalist, the engine is location aware and hopefully delivers the reminders in the local time of the user. - Decoupled the reminder engine, so it can be stand alone from the rest of the system. - When registering mobile device, if "app + token" already exists, we remove the previous entry as it is now assumed to be a new user. Helps bring #168 to life.PR 170 Commit 414cdc3
2020-12-18
- Restrict access to the /api/v1/user/register via header simple key - Small improvements to the documentation Resolves #153PR 181 Commit e280411
2020-12-15
- Via idp login, lookup google profile when registering new user. - Bug in tools command, not using events.PR 180 Commit 3bbb521
2020-12-15
- Able to query challenges api and filter by kind. - Added index on user_uuid to table acl_simple. Resolves #169.PR 179 Commit 1476631
2020-12-14
Metadata work - When list is public show description - When list is public and has labels, add tags - When list is not public tell the robots to ignorePR 178 Commit 3021e62
2020-12-14
- Challenge records only include users in the challenge. - Challenge user list is based on acl, not if they have added a record. - Hugo now also listens via events to write content (lal.staticSite). - Hugo supports writing challenge pages when altered via the api. - Able to add "content specific metadata" in hugo. - Small start to cleaning up out of date documentation. Resolves #172PR 173 Commit 0049e8d
2020-12-14
- Adding nats + stan k8s files for ops. - Creating a short lived store for use with sending events for static site generation. - ssl renewal works now, we will find out in March.PR 174 Commit ff36aa7
2020-12-12
- Registering mobile device with a token now supports adding app_identifier. - Openapi reflects the new app_identifier attribute. Resolves #162PR 161 Commit cc44da7
2020-12-11
- using the makefile to fire up nats to improve the developer experience.PR 167 Commit 8d3215e
2020-12-08
* New api endpoint to allow login via idp_token. * Push notifications service consuming nats stream. * New api to register mobile device, linking token to user. * Notifications for when a user joins, leaves or adds to a challenge. * Updated slack-reader to handle the new events. * Able to toggle spaced repetition with the spacebar. * Building the api.overview file based on parsing the openapi document.PR 155 Commit dd04e37
2020-11-09
Short version: - New api for plank recording and viewing history. - New api for challenges. - Able to create a "plank challenge". - Able to give your user a display name via the api. Longer version: - Plank app has its own api now - History via desc - Adding logs to user delete - Making it clear the test coverage dropped - Copy data from lists to plank table - Move planks to plank table and remove lists - Fix lists with no shared settings and set to private - Challenge system, allowing a user to create a challenge group for planking. - Able to add display_name via register api. - Able to add display_name via user/info api. Solves #136.PR 140 Commit f7c0535
2020-10-11
- Closing nats connections. - Simplified event system for nats and memory. - Fixed an issue with "func init" and bindEnv in Viper. - Added "logout" events.PR 146 Commit dbde227
2020-09-26
- Able to add an asset (very poormans cdn) - Introducing an event bus to decouple when a user is deleted and removing assets. - Requires manual update to the db (acl_simple). - Small refactor on parsing in variables into InitApi. - Adding iptables to k3s setup to block public access to kubectl.PR 109 Commit 31ecb94
2020-08-24
Improved spaced repetition - Overview of entries. - Stats of when entries were created. - Able to add entry without going thru an existing list. Plank - History reports week better Resolves #125PR 126 Commit a6682c2
2020-07-28
* Moved openapi into own folder * Able to generate full openapi from parts. * Able to generate clients for, golang, typescript-fetch and dart. * Cobbled some code together to extract the css class names used in svelte so hugo adds the missing ones from tachyons in base css. * Spaced repetition gives the user chance to give feedback on sooner or later to remind of entry.PR 115 Commit 0cfa9b0
2020-07-19
* A plank recorder is born, record planks and view history. * Plank recorder works for logged in and non logged in user, with call to action. * Cleaned up editor code to use more of the website code base * Using api generated by the openapi document * Fixed missing css setup in many of the files * Moved the header section of hugo into its own partial * Moved hugo to a side car in kubernetes, speeding up rendering for the indvidual file as the files scale * Sharing code logic for rollups.PR 110 Commit d6503bb
2020-06-22
* Add slideshow to list type V2 * Update docs on how to clean up ssh tunnels * Sharing css via all.css in js world.PR 104 Commit f4d2b6b
2020-06-14
- Able to delete a user via the api. - Cli tool to delete the user (via the server). - fixed and documented https certificate, not using fullchain. - Making it clearer where all the api httpXXX structs are. - Improved more of the logging to log as json, including field "context. - Upgraded to golang 1.14.3 - Upgraded to alpine 3.12 - Upgraded to hugo 0.72 - Via make it is now possible to run end to end tests locallyPR 94 Commit 6980615
2020-05-23
- Fixes #91, a bug when first time login via google would result in the user not having a data json file of its lists, which would then cause "my lists" to show a 500 as there is no file on disk to render. - Added test coverage for the google oauth callback endpoint. - Improved test coverage a little more.PR 93 Commit fa65123
2019-05-23
- List type v4 data is an array of objects with attributes content and url. - Cleaned up code in package "alist", to follow naming conventions better. - Return messages, refer generically to the documentation (which doesn't exist.. yet!). - Added list type specific documentation. - Added countries and months (under dataset) with a crude covert script (integrations/convert).PR 51 Commit f5924fe
2019-05-23
* Fixes #47, make sure the user is lowercase. * User endpoint returns the uuid and the username. * Better validation on both username and password.PR 49 Commit d20eaa4
2019-05-22
* Acl in use on list creation, editing and viewing. * Acl support via casbin, saved to the database. * /share/alist endpoint to grant or revoke access to a list. * /alist/:uuid checks to see if you are allowed to read the list. * Does require database update before launch. * Fixes #45.PR 46 Commit e546136
2019-05-18
- Filter a list via labels, list type and labels and list type, fixes #39. - Documented the new query parameters.PR 41 Commit 4142f86
2019-05-16
- When using PUT or DELETE, it now checks the request User is the same as the list user. - Added api test for version. - Reduced duplication in the tests. - MustExec, will cause a panic, removed some and documented the non-test example.PR 36 Commit 0a98b55
2019-05-14
* Removing a label will remove it from the list as well. * Added the integration script to cleanup current data related to removing of labels.PR 31 Commit cb0fc65
2019-05-14
When a user is created it returns a 201. When a user is created with the same username and password it returns a 200. When a user is created with a username in the system it returns a 400.PR 32 Commit 4a7d1e2
2019-05-10
- Removing a list will make sure the user who created is the only one who can delete it (Fixed #25). - Posting a list will return a 201, updating = 200 (Fixed #23).PR 26 Commit 8d0ba06
2019-05-09
- Updated the api readmer to reflect the current state of the api endpoints. - The system is aware of labels now (#19). - When querying for the users lists, it is now possible to filter the results based on labels (#19). - PUT now creates lists that do not exist (#20) - Slowly improving the tests.PR 24 Commit d4cd119