Skip to content

Conversation

@jona159
Copy link
Contributor

@jona159 jona159 commented Jan 27, 2026

Type of Change

  • Dependency upgrade
  • Bug fix (non-breaking change)
  • Breaking change
    • e.g. a fixed bug or new feature that may break something else
  • New feature
  • Code quality improvements
    • e.g. refactoring, documentation, tests, tooling, ...

Implementation

  • made device model custom by default
  • changed "Custom" to lowercase
  • fix bug where sensors array was undefined due to custom model not being defined in model definitions

Checklist

  • I gave this pull request a meaningful title
  • My pull request is targeting the dev branch
  • I have added documentation to my code
  • I have deleted code that I have commented out

Additional Information

Copy link
Member

@scheidtdav scheidtdav left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added some small resilience code, other than that lgtm.

@scheidtdav scheidtdav merged commit 8f9f8ad into dev Jan 30, 2026
6 checks passed
@scheidtdav scheidtdav deleted the fix/custom-device-model-crash branch January 30, 2026 15:44
scheidtdav added a commit that referenced this pull request Feb 3, 2026
* Feat/user registration api (#557)

* feat: add draft for port of user registration to resource route

* feat: partly implement refresh token

* docs: simplify contributing and add info about api routes and shared logic

* feat(api): finalize user registration endpoint

* fix(tests): get the tests to run be reconfiguring build steps

* docs(db): readd db setup and seed scripts with README info for it

* fix: wrong import of utils

* refactor: remove leftover custom server stuff

* fix(tests): add missing refresh token table

* fix(tests): reenable remaining tests for registration

* fix(ci): remove playwright and use correct node version

* fix(ci): run the tests with a postgres container

* feat(tests): add coverage report

* fix(build): reorganize server modules to correctly split client/ server

* fix(build): miss an import

* fix(build): remove leftovers from custom server implementation

* chore(deps): bump react-router dependencies

* chore(deps): update react-router

* feat/user me api (#559)

* feat(api): add api routes for /users/me

* fix(tests): api me PUT

* feat(api): add delete me endpoint

* feat(api): add root route (#560)

* start

* new commit

* tested docs

* added a route

* Added API Docs

* modified

* removed unsupported packages

* updated

* Modified

* script generation without using ts-node.

* modified

* fix: update package-lock.json

* Updated (#575)

* Updated README

* Updated README

* Removed duplicate Documentation section (#576)

* Updated README

* Updated README

* Removed duplicate section.

* Update README.md

* Feat/api email and password (#561)

* feat(api): add email-confirmation endpoint

* feat(api): add request password reset

* feat(api): add password reset

* feat(api): implement resend email confirmation (without sending yet)

* feat/api auth (#562)

* feat(api): add email-confirmation endpoint

* feat(api): add request password reset

* feat(api): add password reset

* feat(api): implement resend email confirmation (without sending yet)

* feat(api): add sign-in, sign-out and refresh-routes to api

* feat(api): implement refresh endpoint

---------

Co-authored-by: jona159 <65068389+jona159@users.noreply.github.com>

* feat(api): boxes for user endpoints (#573)

* feat/api misc (#571)

* feat(api): boxes for user endpoints

* feat(api): add tags and stats route scaffold

* feat(api): implement tags route

* refactor: remove unnecessary imports

* feat(api): implement statistics route

---------

Co-authored-by: jona159 <65068389+jona159@users.noreply.github.com>

* tests: disable integration related test

---------

Co-authored-by: JerryVincent <jerrynambalampara111@gmail.com>
Co-authored-by: Jerry Vincent <85385440+JerryVincent@users.noreply.github.com>
Co-authored-by: jona159 <65068389+jona159@users.noreply.github.com>

* Added annotations for sign-in (#578)

* Fix/docs autogen in debug (#579)

* Added annotations for sign-in

* fix(tools): auto generate docs in debug mode when page refreshes

---------

Co-authored-by: JerryVincent <jerrynambalampara111@gmail.com>

* bump nodejs version (#584)

* build(deps): bump node dependency

* build(deps): update package.json to require at least node 22

* build(deps): set node to 24

* build(deps): install

* build: run browserlist (#586)

* build(deps-dev): bump eslint-plugin-unicorn from 56.0.1 to 60.0.0 (#587)

Bumps [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn) from 56.0.1 to 60.0.0.
- [Release notes](https://github.com/sindresorhus/eslint-plugin-unicorn/releases)
- [Commits](sindresorhus/eslint-plugin-unicorn@v56.0.1...v60.0.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-unicorn
  dependency-version: 60.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump actions/checkout from 4 to 5 (#590)

Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Added clustering of mobile devices. (#588)

* Added clustering of mobile devices.

* feat: adjust cluster params according to discussion

---------

Co-authored-by: David Scheidt <david.scheidt@opensenselab.org>

* build(deps): bump actions/setup-node from 4 to 5 (#594)

Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 5.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](actions/setup-node@v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix: bump patch versions and remix-run/dev to fix security issue (#615)

* Feat/api boxes sensors (#580)

* feat: add draft for port of user registration to resource route

* feat: partly implement refresh token

* docs: simplify contributing and add info about api routes and shared logic

* feat(api): finalize user registration endpoint

* fix(tests): get the tests to run be reconfiguring build steps

* docs(db): readd db setup and seed scripts with README info for it

* fix: wrong import of utils

* refactor: remove leftover custom server stuff

* fix(tests): add missing refresh token table

* fix(tests): reenable remaining tests for registration

* fix(ci): remove playwright and use correct node version

* fix(ci): run the tests with a postgres container

* feat(tests): add coverage report

* fix(build): reorganize server modules to correctly split client/ server

* fix(build): miss an import

* fix(build): remove leftovers from custom server implementation

* chore(deps): bump react-router dependencies

* chore(deps): update react-router

* feat/user me api (#559)

* feat(api): add api routes for /users/me

* fix(tests): api me PUT

* feat(api): add delete me endpoint

* feat(api): add root route (#560)

* start

* new commit

* tested docs

* added a route

* Added API Docs

* modified

* removed unsupported packages

* updated

* Modified

* script generation without using ts-node.

* modified

* fix: update package-lock.json

* Updated (#575)

* Updated README

* Updated README

* Removed duplicate Documentation section (#576)

* Updated README

* Updated README

* Removed duplicate section.

* Update README.md

* Feat/api email and password (#561)

* feat(api): add email-confirmation endpoint

* feat(api): add request password reset

* feat(api): add password reset

* feat(api): implement resend email confirmation (without sending yet)

* feat/api auth (#562)

* feat(api): add email-confirmation endpoint

* feat(api): add request password reset

* feat(api): add password reset

* feat(api): implement resend email confirmation (without sending yet)

* feat(api): add sign-in, sign-out and refresh-routes to api

* feat(api): implement refresh endpoint

---------

Co-authored-by: jona159 <65068389+jona159@users.noreply.github.com>

* feat(api): boxes for user endpoints (#573)

* feat/api misc (#571)

* feat(api): boxes for user endpoints

* feat(api): add tags and stats route scaffold

* feat(api): implement tags route

* refactor: remove unnecessary imports

* feat(api): implement statistics route

---------

Co-authored-by: jona159 <65068389+jona159@users.noreply.github.com>

* feat(api): add route and test files

* feat: add test code

* feat: add dummy sensors to devices and implement getting them back

* feat: prefer dev server in no production envs and hide dev in prod

* feat(docs): start adding docs to route

* feat: finish up to the point where we need measurements

* fix: api routes without need for measurements

* fix: stats call

* fix: remaining tests

* fix: frontend issue from changing the service implementation

* Feat/api boxes (#582)

* feat: add command for drizzle studio

* feat: devices loader

* feat: load single device

* feat: uncomment get boxes, delete box path

* feat(wip): add boxes test suite

* feat: add devices service

* fix: some types, formatting

* feat: wip devices api

* fix: tests

* refactor: use modern syntax for assertion

* feat: adjust for zod schema

* feat: add drizzle check

* feat: add phenomenon and dates to where clause

* fix: tests and validation schema

* fix: cast types as any temporarily

---------

Co-authored-by: jona159 <raabejonas@yahoo.de>

---------

Co-authored-by: JerryVincent <jerrynambalampara111@gmail.com>
Co-authored-by: Jerry Vincent <85385440+JerryVincent@users.noreply.github.com>
Co-authored-by: jona159 <65068389+jona159@users.noreply.github.com>
Co-authored-by: jona159 <raabejonas@yahoo.de>

* Feat: update endpoint paths and expected data format for backward compatibility (#613)

* feat: add helper file to parse both multipart/form-data and application/json request content

* feat: move /sign-in endpoint to /users/sign-in route

* fix: handle user case when no name is provided during registration gracefully

* feat: move endpoint /register to /users/register

* feat: move /refresh-auth to /users/refresh-auth and allow json format

* fix: linter warnings

* refactor: rename helpers.ts => request-parsing.ts

* refactor: remove unused api.users.ts

* fix: remove test for deleted endpoint

* fix: more helpers not realated to parsing back to helpers.ts

* fix: remove general helpers from request-parsing.ts

* refactor: rename helpers.spec.ts to request-parsing.spec.ts

---------

Co-authored-by: David Scheidt <scheidtdav@users.noreply.github.com>

* corrected type error for the devices variable (#621)

* Feat: post api boxes (#616)

* feat: add draft for port of user registration to resource route

* feat: partly implement refresh token

* docs: simplify contributing and add info about api routes and shared logic

* feat(api): finalize user registration endpoint

* fix(tests): get the tests to run be reconfiguring build steps

* docs(db): readd db setup and seed scripts with README info for it

* fix: wrong import of utils

* refactor: remove leftover custom server stuff

* fix(tests): add missing refresh token table

* fix(tests): reenable remaining tests for registration

* fix(ci): remove playwright and use correct node version

* fix(ci): run the tests with a postgres container

* feat(tests): add coverage report

* fix(build): reorganize server modules to correctly split client/ server

* fix(build): miss an import

* fix(build): remove leftovers from custom server implementation

* chore(deps): bump react-router dependencies

* chore(deps): update react-router

* feat/user me api (#559)

* feat(api): add api routes for /users/me

* fix(tests): api me PUT

* feat(api): add delete me endpoint

* feat(api): add root route (#560)

* start

* new commit

* tested docs

* added a route

* Added API Docs

* modified

* removed unsupported packages

* updated

* Modified

* script generation without using ts-node.

* modified

* fix: update package-lock.json

* Updated (#575)

* Updated README

* Updated README

* feat: add command for drizzle studio

* feat: devices loader

* feat: load single device

* feat: uncomment get boxes, delete box path

* feat(wip): add boxes test suite

* feat: add devices service

* fix: some types, formatting

* Removed duplicate Documentation section (#576)

* Updated README

* Updated README

* Removed duplicate section.

* Update README.md

* Feat/api email and password (#561)

* feat(api): add email-confirmation endpoint

* feat(api): add request password reset

* feat(api): add password reset

* feat(api): implement resend email confirmation (without sending yet)

* feat/api auth (#562)

* feat(api): add email-confirmation endpoint

* feat(api): add request password reset

* feat(api): add password reset

* feat(api): implement resend email confirmation (without sending yet)

* feat(api): add sign-in, sign-out and refresh-routes to api

* feat(api): implement refresh endpoint

---------

Co-authored-by: jona159 <65068389+jona159@users.noreply.github.com>

* feat(api): boxes for user endpoints (#573)

* feat/api misc (#571)

* feat(api): boxes for user endpoints

* feat(api): add tags and stats route scaffold

* feat(api): implement tags route

* refactor: remove unnecessary imports

* feat(api): implement statistics route

---------

Co-authored-by: jona159 <65068389+jona159@users.noreply.github.com>

* feat(api): add route and test files

* feat: add test code

* feat: add dummy sensors to devices and implement getting them back

* feat: prefer dev server in no production envs and hide dev in prod

* feat(docs): start adding docs to route

* feat: wip devices api

* feat: finish up to the point where we need measurements

* fix: api routes without need for measurements

* fix: stats call

* fix: remaining tests

* fix: frontend issue from changing the service implementation

* fix: tests

* refactor: use modern syntax for assertion

* feat: adjust for zod schema

* feat: add drizzle check

* feat: add phenomenon and dates to where clause

* feat: update returned data format of users/me/boxes endpoint to match old data format

* feat: expose additional device attributes

* fix: return jwt token as access_token

* feat: add post and get /boxes

* refactor: move CreateBoxSchema to devices-service.server.ts

* fix: comment get /boxes route since this functionality is not implemented

* fix: linting errors

* fix: failing tests

* feat: add type check

* feat: add check for authHeader for GET /users/me/boxes

* refactor: return box with sensor data from createDevice

* test: createDevice

* test: post /boxes

* fix: return last measurements as string

* fix: lastMeasurements types

* fix: linter warnings

* refactor: device.server.ts

* fix: linter warnings

* doc: udpate post api documentation

* fix: after merging dev into current branch.

* refactor: remove access_token mentions from api responses

* refactor: add check for request type for api/boxes endpoint

* doc: update api/boxes documentation after allowing different request types

* refactor: remove unused code and fix linter errors

* fix: linting issues

---------

Co-authored-by: David Scheidt <david.scheidt@opensenselab.org>
Co-authored-by: David Scheidt <scheidtdav@users.noreply.github.com>
Co-authored-by: JerryVincent <jerrynambalampara111@gmail.com>
Co-authored-by: Jerry Vincent <85385440+JerryVincent@users.noreply.github.com>
Co-authored-by: jona159 <raabejonas@yahoo.de>
Co-authored-by: jona159 <65068389+jona159@users.noreply.github.com>

* build(deps): bump axios and @directus/sdk (#521)

* build(deps): bump axios and @directus/sdk

Bumps [axios](https://github.com/axios/axios) to 1.8.3 and updates ancestor dependency [@directus/sdk](https://github.com/directus/directus/tree/HEAD/sdk). These dependencies need to be updated together.


Updates `axios` from 1.7.9 to 1.8.3
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](axios/axios@v1.7.9...v1.8.3)

Updates `@directus/sdk` from 10.3.5 to 18.0.3
- [Release notes](https://github.com/directus/directus/releases)
- [Commits](https://github.com/directus/directus/commits/HEAD/sdk)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: indirect
- dependency-name: "@directus/sdk"
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* feat: migrate to latest directus sdk

* fix: typescript issue with readonly string[] of languages

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: David Scheidt <david.scheidt@opensenselab.org>

* Fix/username taken (#543)

* fix: handle existing usernames properly

* feat: add translations to sign up page

* feat: migrate join to new translations

* Chore/update dependencies (#577)

* chore(deps): bump dependencies

* chore(deps): run npm audit

* chore(deps): update directus

* fix(deps): typecheck issues

* build: update package-lock

* fix: rewrite package-lock

* fix: issue from merge resolution

* fix: lint

* fix(styles): apply previous overflow fix only for explore page so rest stays untouched (#581)

* fix: update and remove a bunch of security vulnerable deps (#623)

* fix: update and remove a bunch of security vulnerable deps

* fix: rewrite package-lock.json

* fixed loading error of profile/username route (#624)

* fixed loading error of profile/username route

* fix: manage imports

---------

Co-authored-by: David Scheidt <david.scheidt@opensenselab.org>

* build(deps): bump actions/setup-node from 5 to 6 (#626)

Bumps [actions/setup-node](https://github.com/actions/setup-node) from 5 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](actions/setup-node@v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump prettier from 3.6.1 to 3.6.2 (#629)

* Feat/post new measurements (#614)

* feat: wip post new measurements

* feat: measurement service wip

* fix: some tests

* fix: migrations

* fix: tests for json data

* fix: cleanup

* feat: add tests and routes to post a measurement to a sensor

* feat: adjust post single measurement for location data

* feat: measurement location tests first draft

* feat: add more location tests

* feat: parse locations in decoder

* feat: do nothing on conflict, dont throw

* fix: access token migrations

* fix: byte protocol tests

* fix: typecheck

* fix: typo

* fix: check authorization token if box has auth enabled

* fix: add use auth to default columns

* fix: linting issue

---------

Co-authored-by: David Scheidt <david.scheidt@opensenselab.org>
Co-authored-by: David Scheidt <scheidtdav@users.noreply.github.com>

* Add custom sponsorship URL to FUNDING.yml

* build(deps): bump react-dom and @types/react-dom (#628)

* build(deps): bump react-dom and @types/react-dom

Bumps [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) and [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom). These dependencies needed to be updated together.

Updates `react-dom` from 19.1.0 to 19.2.0
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.2.0/packages/react-dom)

Updates `@types/react-dom` from 19.1.6 to 19.2.2
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom)

---
updated-dependencies:
- dependency-name: react-dom
  dependency-version: 19.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: "@types/react-dom"
  dependency-version: 19.2.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: update react as well

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: David Scheidt <david.scheidt@opensenselab.org>

* Devicedetail fix (#631)

* fixed loading error of profile/username route

* fix: show on map feature

* fix: add missing suffix

---------

Co-authored-by: David Scheidt <david.scheidt@opensenselab.org>

* Add templates for pull requests, feature requests and bug reports (#632)

* feat: add issue templates

* feat: add pull request template

* feat: make it more clear how to check a box

* fix: problem with existing issue form (#636)

* Feat/transfer routes (#595)

* feat: add draft for port of user registration to resource route

* feat: partly implement refresh token

* docs: simplify contributing and add info about api routes and shared logic

* feat(api): finalize user registration endpoint

* fix(tests): get the tests to run be reconfiguring build steps

* docs(db): readd db setup and seed scripts with README info for it

* fix: wrong import of utils

* refactor: remove leftover custom server stuff

* fix(tests): add missing refresh token table

* fix(tests): reenable remaining tests for registration

* fix(ci): remove playwright and use correct node version

* fix(ci): run the tests with a postgres container

* feat(tests): add coverage report

* fix(build): reorganize server modules to correctly split client/ server

* fix(build): miss an import

* fix(build): remove leftovers from custom server implementation

* chore(deps): bump react-router dependencies

* chore(deps): update react-router

* feat/user me api (#559)

* feat(api): add api routes for /users/me

* fix(tests): api me PUT

* feat(api): add delete me endpoint

* feat(api): add root route (#560)

* start

* new commit

* tested docs

* added a route

* Added API Docs

* modified

* removed unsupported packages

* updated

* Modified

* script generation without using ts-node.

* modified

* fix: update package-lock.json

* Updated (#575)

* Updated README

* Updated README

* feat: add command for drizzle studio

* feat: devices loader

* feat: load single device

* feat: uncomment get boxes, delete box path

* feat(wip): add boxes test suite

* feat: add devices service

* fix: some types, formatting

* Removed duplicate Documentation section (#576)

* Updated README

* Updated README

* Removed duplicate section.

* Update README.md

* Feat/api email and password (#561)

* feat(api): add email-confirmation endpoint

* feat(api): add request password reset

* feat(api): add password reset

* feat(api): implement resend email confirmation (without sending yet)

* feat/api auth (#562)

* feat(api): add email-confirmation endpoint

* feat(api): add request password reset

* feat(api): add password reset

* feat(api): implement resend email confirmation (without sending yet)

* feat(api): add sign-in, sign-out and refresh-routes to api

* feat(api): implement refresh endpoint

---------

Co-authored-by: jona159 <65068389+jona159@users.noreply.github.com>

* feat(api): boxes for user endpoints (#573)

* feat/api misc (#571)

* feat(api): boxes for user endpoints

* feat(api): add tags and stats route scaffold

* feat(api): implement tags route

* refactor: remove unnecessary imports

* feat(api): implement statistics route

---------

Co-authored-by: jona159 <65068389+jona159@users.noreply.github.com>

* feat(api): add route and test files

* feat: add test code

* feat: add dummy sensors to devices and implement getting them back

* feat: prefer dev server in no production envs and hide dev in prod

* feat(docs): start adding docs to route

* feat: wip devices api

* feat: finish up to the point where we need measurements

* fix: api routes without need for measurements

* fix: stats call

* fix: remaining tests

* fix: frontend issue from changing the service implementation

* fix: tests

* refactor: use modern syntax for assertion

* feat: adjust for zod schema

* feat: add drizzle check

* feat: transfer routes

* feat(wip): transfer boxes

* fix: deprecated json function

* fix: imports

* fix: imports, json

* fix: imports, json

* fix: import

* fix: import order

* fix: import order

* fix: migrations

* feat: wrap device and claim update in transaction

* fix: rm duplicate functions, tests

* fix: error code

---------

Co-authored-by: David Scheidt <david.scheidt@opensenselab.org>
Co-authored-by: David Scheidt <scheidtdav@users.noreply.github.com>
Co-authored-by: JerryVincent <jerrynambalampara111@gmail.com>
Co-authored-by: Jerry Vincent <85385440+JerryVincent@users.noreply.github.com>

* Feat/migrate boxes box id data sensor (#648)

* fix: API path for /api/boxes/{deviceId}/sensors

* feat: get measurements for specific box

All the parameters are parsed but currently only the device and sensor ID are being used

* fix: don't explicitly state platform in docker-compose

* feat: cleanup types

* fix: function call and cleanup imports

* feat: get data properly

* feat: mark outliers

* feat: implement csv format

* feat: cleanup

* feat: add unit tests

* fix: remove todo

* fix: lint

* fix: timezones

* fix: lint and requested changes

* fix: delete unused function

---------

Co-authored-by: Timber <timber@opensenselab.org>
Co-authored-by: jona159 <raabejonas@yahoo.de>

* Fixed the image upload problem and moved the resource routes from the resources+ folder as the react router doesn't support this. (#647)

* Fixed the image upload problem and moved the resource routes from the resources+ folder as the react router doesn't support this.

* Clsoe enabled on the Dialog

* Feat/migrate boxes sense box id locations (#650)

* feat: create response utils

* feat: add response types to api.boxes.deviceId.data.sensorId

* fix: replace tab with space

* feat: implement location endpoint

* feat: only get required locations from database

* feat: unit tests

* fix: lint

* feat: delete unused method

* feat: delete outdated comment

* fix: remove duplicated whitespace

* fix: delete measurements for all test times

* fix: remove eslint ignore comment

* fix: lint

* feat: remove TODO

---------

Co-authored-by: Timber <timber@opensenselab.org>

* fix: remove npm as direct dependency (#656)

* Feat/utilize response utils (#657)

* feat: use StandardResponse for API requests

* fix: change return code back to forbidden

* fix: tests

* fix: proper import in param-utils

* fix: don't stringify and don't return anything for no content

* fix: dont allow creating response body in no content util

---------

Co-authored-by: Timber <timber@opensenselab.org>
Co-authored-by: jona159 <raabejonas@yahoo.de>

* Feat/mailer (#612)

* feat: add draft for port of user registration to resource route

* feat: partly implement refresh token

* docs: simplify contributing and add info about api routes and shared logic

* feat(api): finalize user registration endpoint

* fix(tests): get the tests to run be reconfiguring build steps

* docs(db): readd db setup and seed scripts with README info for it

* fix: wrong import of utils

* refactor: remove leftover custom server stuff

* fix(tests): add missing refresh token table

* fix(tests): reenable remaining tests for registration

* fix(ci): remove playwright and use correct node version

* fix(ci): run the tests with a postgres container

* feat(tests): add coverage report

* fix(build): reorganize server modules to correctly split client/ server

* fix(build): miss an import

* fix(build): remove leftovers from custom server implementation

* chore(deps): bump react-router dependencies

* chore(deps): update react-router

* feat/user me api (#559)

* feat(api): add api routes for /users/me

* fix(tests): api me PUT

* feat(api): add delete me endpoint

* feat(api): add root route (#560)

* start

* new commit

* tested docs

* added a route

* Added API Docs

* modified

* removed unsupported packages

* updated

* Modified

* script generation without using ts-node.

* modified

* fix: update package-lock.json

* Updated (#575)

* Updated README

* Updated README

* Removed duplicate Documentation section (#576)

* Updated README

* Updated README

* Removed duplicate section.

* Update README.md

* Feat/api email and password (#561)

* feat(api): add email-confirmation endpoint

* feat(api): add request password reset

* feat(api): add password reset

* feat(api): implement resend email confirmation (without sending yet)

* feat/api auth (#562)

* feat(api): add email-confirmation endpoint

* feat(api): add request password reset

* feat(api): add password reset

* feat(api): implement resend email confirmation (without sending yet)

* feat(api): add sign-in, sign-out and refresh-routes to api

* feat(api): implement refresh endpoint

---------

Co-authored-by: jona159 <65068389+jona159@users.noreply.github.com>

* feat(api): boxes for user endpoints (#573)

* feat/api misc (#571)

* feat(api): boxes for user endpoints

* feat(api): add tags and stats route scaffold

* feat(api): implement tags route

* refactor: remove unnecessary imports

* feat(api): implement statistics route

---------

Co-authored-by: jona159 <65068389+jona159@users.noreply.github.com>

* feat(api): add route and test files

* feat: add test code

* feat: add dummy sensors to devices and implement getting them back

* feat: prefer dev server in no production envs and hide dev in prod

* feat(docs): start adding docs to route

* feat: finish up to the point where we need measurements

* fix: api routes without need for measurements

* fix: stats call

* fix: remaining tests

* fix: frontend issue from changing the service implementation

* feat: add react mail

* feat: add nodemailer and setup for sending mails

* feat: send password reset mails

* refactor: fix lint issues with mails

* feat: implement email confirmation mail

* feat: add mail for new users

* fix: rewrite package lock

* fix: rewrite package lock

* fix: packages

* feat: add email to new devices being created

* feat: send mail when email requested to change

* feat: set email language properly

* feat: implement base mail for all devices and migrate device specifics

* fix: move ts-ignore

* fix: use example vars for test

* feat: use ethereal.email for testing

* fix: remove conflicting test

* fix: rewrite package-lock.json

* refactor: remove unused comment

* refactor: remove mailhog platform

* feat: remove support@sensebox.de and matthias mail address

---------

Co-authored-by: JerryVincent <jerrynambalampara111@gmail.com>
Co-authored-by: Jerry Vincent <85385440+JerryVincent@users.noreply.github.com>
Co-authored-by: jona159 <65068389+jona159@users.noreply.github.com>

* build(deps): bump actions/checkout from 5 to 6 (#659)

Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Changing label language of the map and the app language from explore page (#653)

* added language selection in the explore route

* User can now change the language of the map labels from the explore route.

* This commit fixes the language switching problem and avoids passing custom props.

* This commit uses type guardind for the layer instead of casting to any.

* Fix the bug that the app is not reflecting the default user language setting.

* This commit will fix the issues related to switching the language with the user-preferred language and falls back to the default language when a user is logged out.

* This commit will removes the eslint warnings and a test error which was happening in one of the test routes.

* refactor: remove unused state from selector

---------

Co-authored-by: David Scheidt <david.scheidt@opensenselab.org>
Co-authored-by: David Scheidt <scheidtdav@users.noreply.github.com>

* Language fix (#662)

* added language selection in the explore route

* User can now change the language of the map labels from the explore route.

* This commit fixes the language switching problem and avoids passing custom props.

* This commit uses type guardind for the layer instead of casting to any.

* Fix the bug that the app is not reflecting the default user language setting.

* This commit will fix the issues related to switching the language with the user-preferred language and falls back to the default language when a user is logged out.

* This commit will removes the eslint warnings and a test error which was happening in one of the test routes.

* This commit will fix the issue with the labels that are currently empty for the road markers.

* this commit will fix the formatting issues and removed the text-field names that might change in the future mapbox update..

* fix: resolve eslint warning

* refactor: reformat language selector

* refactor: use type for loader data

---------

Co-authored-by: David Scheidt <david.scheidt@opensenselab.org>

* Language fix (#664)

* added language selection in the explore route

* User can now change the language of the map labels from the explore route.

* This commit fixes the language switching problem and avoids passing custom props.

* This commit uses type guardind for the layer instead of casting to any.

* Fix the bug that the app is not reflecting the default user language setting.

* This commit will fix the issues related to switching the language with the user-preferred language and falls back to the default language when a user is logged out.

* This commit will removes the eslint warnings and a test error which was happening in one of the test routes.

* This commit will fix the issue with the labels that are currently empty for the road markers.

* this commit will fix the formatting issues and removed the text-field names that might change in the future mapbox update..

* This commit fill fix the eslint warning that complains about calling the i18next.changeLanguage().

* fixed formatting

* fix: bump react-email to get rid of CVE affected next-js version (#669)

* feat: generate credentials using crypto.random for less collisions (#665)

* Fix/deadlock possible when posting box locations via measurement (#667)

* Upgrade timescaledb

* feat: bulk insert locations

* feat: add TODO (for unit test?)

* feat: bulk insert location updates

* feat: bulk insert and update

* fix: some test problems

* fix: add cast to conform to type

* feat: delete locations after test

* feat: add tests and fix tested code

* fix: remove obsolete code / comments and fix test

* fix: lint

* fix: docker-compose for ci

* refactor: use sensible values for lat/lng

---------

Co-authored-by: Timber <timber@opensenselab.org>
Co-authored-by: David Scheidt <scheidtdav@users.noreply.github.com>
Co-authored-by: David Scheidt <david.scheidt@opensenselab.org>

* feat: bump to postgres 18 and latest timescaledb (#663)

* chore: update npm dependencies (#666)

* chore: update npm dependencies

This should resolve a bunch of security related alerts

* feat: add env.ts to included files

* fix: update package lock after merge

* fix: include undefined unstable_pattern for compatibility

* Show User Statistics on the user profile (#672)

* This commit will show the user statistics on the user profile.

* thsi commit will update the navbar component in the profile/username route to remove unwanted parts from the username

* refactor: format nav-bar

* fix: remove duplicate query and fix count() usage

---------

Co-authored-by: David Scheidt <david.scheidt@opensenselab.org>

* build(deps): bump actions/cache from 4 to 5 (#675)

Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](actions/cache@v4...v5)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix invalid Lat/Lng data breaking the map and enforce proper value ranges (#673)

* feat: prevent invalid lng lat values from breaking the ui

* feat: check geolocation on data received through api

* feat: add constraint to database ensuring proper value ranges for lat lng

* feat: normalize longitude of +180 to -180

* Feat/boxes data (#671)

* feat: install csv-stringify

* feat: uncomment route

* refactor: csv conversion, comma as default delimiter (legacy)

* refactor: csv util

* refactor: measurement server for get operations

* refactor: rm get operations from measurement server file

* feat: find matching sensors

* fix: import

* feat: transform measurements

* feat: zod schema for boxes data params

* feat: boxes data api

* fix: import

* feat: boxes data tests

* feat: export raw pg client

* fix: rm unused

* feat: include bbox check

* fix: trim text to account for empty last line

* fix: throw out csv stringify again

* feat: refine parsing to handle grouptag param

* fix: rm unused function

* feat: stream measurements

* fix: find matching sensors case insensitive phenomenon

* feat: stream in loader

* fix: improve tests

* fix: uninstall csv-stringify, revert getCsv util changes

* feat: use user generation util

* fix: minor things

* fix: rm unuseful comments

* fix: uninstall pg-query-stream

* fix: lint warnings

* fix: rm unused var from destructured object

* fix: rm double encoding

* fix: use boxid lowercase consistently, rm param normalization

* fix: syntax error

---------

Co-authored-by: David Scheidt <david.scheidt@opensenselab.org>

* Fix/password validation account deletion (#681)

* apply formatting

* actually check if password is correct

---------

Co-authored-by: David Scheidt <scheidtdav@users.noreply.github.com>

* add missing translations (#687)

* feat: add translations to front page

* feat: some more translations

* feat: more translations

* fix: remaining missing translations

* fix: add missing import

* fix: usage of columns helper class

---------

Co-authored-by: Timber <timber@opensenselab.org>

* Fix for the overflow issue of the sensor cards in the devicedetails component (#686)

* this commit fixes the alignment issue of the sensor cards in the devicedetail component

* fix: remove unnecessary comments

---------

Co-authored-by: David Scheidt <scheidtdav@users.noreply.github.com>
Co-authored-by: David Scheidt <david.scheidt@opensenselab.org>

* Add a faster way of going back to the explore section from the settings (#674)

* feat: link to explore page in profile / settings instead of root

* refactor: remove outdated stepper class

---------

Co-authored-by: Timber <timber@opensenselab.org>
Co-authored-by: David Scheidt <scheidtdav@users.noreply.github.com>
Co-authored-by: David Scheidt <david.scheidt@opensenselab.org>

* feat: respect how the username is written in the profile (#676)

Co-authored-by: Sven Heitmann <zven@users.noreply.github.com>

* Feat/update box (#625)

* feat: update device server fn, include sensors in device

* feat: put action

* feat: put route

* feat: put tests

* feat: more tests for grouptags

* feat: add icon field to sensor schema

* feat: update sensors

* feat: extend enum

* fix: include icon in sensor schema

* fix: lint

* feat: add feinstaub addon tests

* feat: add addon definitions

* feat: check addon field

* fix: rm dupliate update device function

* fix: adjustmenets to edit box component to use updateDevice

* feat: extend model definitions

* fix: rm custom from model definitions

* fix: broken tests due to model and sensor parameters

* fix: only pass model if no sensors provided

* fix: handle model and sensors in create device

* fix: rm model

* fix: rename test grouptag

* fix: delete data after test, fix tags test

* fix: indentation

* fix :types

* fix: response utils

* fix: rm model from text box

* fix: rm ts ignore

* fix: readd mail sending

* feat: add mail mappings for more device models

---------

Co-authored-by: David Scheidt <david.scheidt@opensenselab.org>

* feat: reallow +180 for longitudes in the database but still normalize others

* fix: bump dependencies to include security updates (#690)

* Reestablish textual data upload via UI (#691)

* feat: reenable column navigation

* feat: add translation file

* fix: translate csv upload view

* feat: add i18n-ally to list of recommended extensions

* fix: use value binding for textarea

* feat: implement sending data to the server via ui

* feat: remove first line from csv files when uploaded

* feat: reestablish same behavior as existing osem

* fix: correctly preselect data format

* refactor: implement feedback

* fix: remove broken and fundamentally flawed test

* Migrate deleting a boxes measurements (#658)

* feat: add draft for port of user registration to resource route

* feat: partly implement refresh token

* docs: simplify contributing and add info about api routes and shared logic

* feat(api): finalize user registration endpoint

* fix(tests): get the tests to run be reconfiguring build steps

* docs(db): readd db setup and seed scripts with README info for it

* fix: wrong import of utils

* refactor: remove leftover custom server stuff

* fix(tests): add missing refresh token table

* fix(tests): reenable remaining tests for registration

* fix(ci): remove playwright and use correct node version

* fix(ci): run the tests with a postgres container

* feat(tests): add coverage report

* fix(build): reorganize server modules to correctly split client/ server

* fix(build): miss an import

* fix(build): remove leftovers from custom server implementation

* chore(deps): bump react-router dependencies

* chore(deps): update react-router

* feat/user me api (#559)

* feat(api): add api routes for /users/me

* fix(tests): api me PUT

* feat(api): add delete me endpoint

* feat(api): add root route (#560)

* start

* new commit

* tested docs

* added a route

* Added API Docs

* modified

* removed unsupported packages

* updated

* Modified

* script generation without using ts-node.

* modified

* fix: update package-lock.json

* Updated (#575)

* Updated README

* Updated README

* Removed duplicate Documentation section (#576)

* Updated README

* Updated README

* Removed duplicate section.

* Update README.md

* Feat/api email and password (#561)

* feat(api): add email-confirmation endpoint

* feat(api): add request password reset

* feat(api): add password reset

* feat(api): implement resend email confirmation (without sending yet)

* feat/api auth (#562)

* feat(api): add email-confirmation endpoint

* feat(api): add request password reset

* feat(api): add password reset

* feat(api): implement resend email confirmation (without sending yet)

* feat(api): add sign-in, sign-out and refresh-routes to api

* feat(api): implement refresh endpoint

---------

Co-authored-by: jona159 <65068389+jona159@users.noreply.github.com>

* feat(api): boxes for user endpoints (#573)

* feat/api misc (#571)

* feat(api): boxes for user endpoints

* feat(api): add tags and stats route scaffold

* feat(api): implement tags route

* refactor: remove unnecessary imports

* feat(api): implement statistics route

---------

Co-authored-by: jona159 <65068389+jona159@users.noreply.github.com>

* feat(api): add route and test files

* feat: add test code

* feat: add dummy sensors to devices and implement getting them back

* feat: prefer dev server in no production envs and hide dev in prod

* feat(docs): start adding docs to route

* feat: finish up to the point where we need measurements

* fix: api routes without need for measurements

* fix: stats call

* fix: remaining tests

* fix: frontend issue from changing the service implementation

* feat: use a redirect for a more consistent route path

* feat: add deprecation notices to api info

* docs: add deprecation notice for user registration api

* fix: remove invalid parameter

* feat: add rudimentary delete implementation

* fix: remove new route

* fix: remove permanent redirect

* feat: add missing parameters for deletion

* feat: add tests

* fix: tests

* fix: coerce values to properly parse params

* fix: remove handling unsupported GET requests

* refactor: remove handling unsupported json bodies

* refactor: replace forbidden with notfound

* test: add delete test for foreign devices

---------

Co-authored-by: JerryVincent <jerrynambalampara111@gmail.com>
Co-authored-by: Jerry Vincent <85385440+JerryVincent@users.noreply.github.com>
Co-authored-by: jona159 <65068389+jona159@users.noreply.github.com>

* refactor: format csv.ts

* Fixes unwanted jumps of the stepper while creating a new Device (#704)

* This commit fixes the unwanted jumping of the stepper upon clicking the info button, while creating a new device.

* This commit removes unwanted comments from the code..

* Feat/add missing edit fields (#703)

* feat: edit description field

* feat: include description column

* feat: enable editing of devices

* feat: add minio docker service and env settings

* feat: install s3 dependencies

* feat: add img column

* feat: s3 server functions

* feat: add img upload field

* fix: label

* fix: only add selected sensors if custom device model selected

* feat: add tags section

* feat: add website field

* feat: edit website

* fix: type error

* fix: remove redundant tailwind and app.css and import correct css (#711)

* Small fixes to the project setup (#712)

* feat: add minio-data to gitignore

* feat: add current nvmrc to github action for deployment

* fix: add missing quotes to env example

* fix: remove spaces?

* feat: bump node to the latest lts release (#713)

* Fix/custom device model crash (#714)

* fix: custom model should be lowercase

* fix: make custom lowercase

* fix: make custom model default

* fix: lowercase

* fix: lowercase

* fix: include only models OR sensors in payload

* fix: exclude custom model from check

* fix: set sensors if model is not custom

* fix: remove another occurence of capital case Custom

* fix: add conditional check

---------

Co-authored-by: David Scheidt <david.scheidt@opensenselab.org>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: JerryVincent <jerrynambalampara111@gmail.com>
Co-authored-by: Jerry Vincent <85385440+JerryVincent@users.noreply.github.com>
Co-authored-by: jona159 <65068389+jona159@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: jona159 <raabejonas@yahoo.de>
Co-authored-by: Maria Zadnepryanets <mariya.z@gmail.com>
Co-authored-by: Timber <timo@teemze.de>
Co-authored-by: Timber <timber@opensenselab.org>
Co-authored-by: Timber <timber@systemli.org>
Co-authored-by: Sven Heitmann <zven@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Box creation: Device selection "Custom" crashes the app

3 participants