-
Maybe embed CodeMirror ourself instead of using react-codemirror -- See https://www.codiga.io/blog/revisiting-codemirror-6-react-implementation/ -- https://discuss.codemirror.net/t/reconfiguring-theme/7083 -- https://github.com/uiwjs/react-codemirror/blob/master/core/src/useCodeMirror.ts
-
Fix "opened &&"
-
Fix autogrow of CodeMirror -- https://discuss.codemirror.net/t/codemirror-6-setting-a-minimum-height-but-allow-the-editor-to-grow/2520/7
-
Integrate prettier to format source code -- https://discuss.codemirror.net/t/formatting-the-code/2442/5
-
Put search panel on top of CodeMirror -- https://discuss.codemirror.net/t/search-panel-placement-and-size/4030/4
-
Write an overview of available key commands -- Search for "keymap" in the reference https://codemirror.net/docs/ref/#h_undo_history
-
Only use CodeMirror extensions we need -- see https://codemirror.net/docs/ref/#codemirror.basicSetup
-
Use workerpool or Comlink to do heavy stuff in web workers (like linting, formatting or completion generation) -- https://github.com/josdejong/workerpool
-
Autocomplete fields. object (e.g. fields.myFieldId.value) -- Maybe parse with https://github.com/acornjs/acorn/tree/master/acorn/ for that, or better https://github.com/eslint/espree (uses acorn internally and used by eslint)
-
Autocomplete and validate SVG tags and attributes in editor -- At least autocompletion is supported by @codemirror/lang-xml with a given schema -- Possible base for a schema: https://github.com/nbelyh/editsvgcode/blob/master/src/svg-schema.js -- See also https://www.npmjs.com/package/fast-xml-parser -- and https://github.com/sindresorhus/is-svg/blob/main/index.js -- another option would be to use https://github.com/SAP/xml-tools/ --- It has a parser built on Chevrotain and some schema validator --- We simply wouldn't use the languageServer then (for Monaco only)
-
Autocomplete and validate JSON in editor (e.g. for options) -- Currently not supported by @codemirror/lang-json -- Maybe some schema like in https://github.com/remcohaszing/monaco-yaml can be adapted -- But that we would have to implement ourself with something like this https://discuss.codemirror.net/t/showing-syntax-errors/3111/6 -- We could build our own parser using Chevrotain with schema validation --- Starting points https://github.com/Chevrotain/chevrotain/blob/master/examples/grammars/json/json.js --- or https://github.com/Chevrotain/chevrotain/tree/gh-pages/performance/jsonParsers/chevrotain --- https://github.com/microsoft/vscode-json-languageservice/blob/main/src/services/jsonValidation.ts --- and then after generating the AST implement something like https://github.com/SAP/xml-tools/tree/master/packages/simple-schema
-
Check where fast copy is really necessary in StructureForm
-
Check if one of the other parsers for Javascript is faster than babel when formatting code with prettier -- Currently using babel -- Alternatives see https://prettier.io/docs/en/options#parser -- Also see https://prettier.io/blog/2020/11/20/2.2.0.html
-
Rename Designer to Builder
-
Use timestamp and key prop in MenuPanel and use useRef in menu items itself
-
there is languages in common.yml and a languages.yml, decide for one
-
bring in template description and info (simply make both non optional in Template.tsx)
-
useDisclosure instead of useState in all modal buttons (see options editor button)
-
useDesigner instead of useIsDesigning
-
Are those flag icons really needed?
-
Get rid of images in /public/images (when we use images we can import them as a component)
-
Rename link to fieldRef
-
Rename id to fieldId to make it more distinct from gid
-
Rename structured-report stuff to template
-
Go back from moduleId to instanceId
-
Maybe replace JSDOM with cheerio (also work in the browser)
-
Use Zustand instead of RTK
-
ref vs fieldId
-
graphics vs drawing vs illustration
-
rename outputs, e.g. TextOutput => Text
-
name all validations.* as ...Schema
-
create useAppAuthenticatedSession and use it
-
Use tsconfig-paths-webpack-plugin for storybook
-
Blitz queries don't need {} anymore
-
Integrate MicroI18n
-
Remove unneed: -- extractFigureTranslations and its package.json script -- processFigureTranslations and its package.json script
-
LanguageChooser vs LanguageSelector
-
Switch from Jest to vitest
-
Make MembershipAdder not load every user, but async (maybe only during search)
-
Modules: Show deprecated, Only starred, Add tags, Sort by [Title, Author, Creation date], only language
-
switch to npm
-
check where useMemo is really needed
-
MeasurementsTable -> MeasurementsTool
-
AccountControl -> AccountOptions
-
...Button -> ...Action (e.g. UndoButton -> UndoAction)
-
Make Measurements field smaller
-
Make Measurments output nice
-
Maybe rename useReportData to useReportOutput
-
configurable gap after paragraph
-
Wrap modules in error boundaries from Blitz
-
Text / HTML export
-
[Tools] ILD Classification
-
[MeasurementTable] Allow to import table
-
Table component
-
Jest tests are currently --runInBand because of the database interactions, maybe switch to mocking the database or Docker base integration tests (see https://www.prisma.io/docs/guides/testing/unit-testing and https://www.prisma.io/docs/guides/testing/integration-testing)
-
Locale vs Language -- https://www.rfc-editor.org/rfc/rfc3066 -- https://www.rfc-editor.org/rfc/rfc5646.html -- https://www.w3.org/International/articles/language-tags/
-
Bug report Mantine: Value in Switch (vs checked)
- Layout: -- direction in Finding -- two layers of containers: finding > group or group > group -- width for Fields: default (fit content for choice, 250 px for empty) - s - m -l - full width
- remove height in Template Flex and in appshell.main for wrapping layout. But what about the trash can?
- Buttons don't get bigger anymore on hover of NumberInput
- Section layout
- MedReporter Logo
- Main Page
- Field extras
- External link images (Next.js Image component, why?)
- [Tools] Lung RADS - add volume
- [Tools] Fazekas scale
- [Tools] PI-RADS
- [Tools] Liver Lab
- Undoble false in template properties
- Rename LanguageSelector to LocaleSelector, and so on
- Switch from Blitz to tRPC and iron-session -- https://dev.to/fcpauldiaz/nextjs-full-example-of-next-iron-session-1019
- Maybe use Typesense for full text search https://typesense.org/docs/0.23.1/api/api-clients.html#libraries -- Ranking / Weights are easier than with PostgreSQL or Mysql
- Maybe switch from Blitz auth to next-auth, but there caveats: -- nextauthjs/next-auth#3941 -- https://arunoda.me/blog/add-auth-support-to-a-next-js-app-with-a-custom-backend -- https://github.com/medreporter/medreporter-nextauth/blob/5b7f88b6335366beb75648927c8608ae1810347b/src/pages/api/auth/%5B...nextauth%5D.ts#L18 -- nextauthjs/next-auth#562 -- May we can check after signIn if user really exists (when using OAuth provider), and if not redirect to signup -- Not possible to update the JWT session cookie is more of a problem
- Integrate components that use tRPC into storybook -- trpc/trpc#1879 (comment) -- can also be used for React testing framework
- Use structuredClone instead of fast-copy to clone objects -- Contra ... seems to be slower somehow
- Switch to another i18n framework -- Paraglide.js https://inlang.com/m/gerre34r/library-inlang-paraglideJs -- Lingui https://lingui.dev/ -- https://betterprogramming.pub/react-app-internationalization-with-linguijs-9486ccd80e07 -- https://bravo-kernel.com/blog/2023/05/how-to-build-a-fully-internationalized-nextjs-application-using-lingui-v4 -- i18nifty https://github.com/garronej/i18nifty -- https://github.com/ivanhofer/typesafe-i18n maintainer passed away - successor is Paraglide -- https://github.com/amannn/next-intl
- Rethink how to name translation keys -- https://dev.to/omaiboroda/three-ways-to-name-i18n-translation-keys-2fed -- https://lokalise.com/blog/translation-keys-naming-and-organizing/ -- https://poeditor.com/blog/translation-keys/#:~:text=Choose%20keys%20that%20clearly%20describe,button.
- Alert now always needs a title mantinedev/mantine#5293
- Missing hold feature of NumberInput https://github.com/orgs/mantinedev/discussions/5292
- Value type of NumberInput now string | number, but in v6 "" | number