Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: ducksmanager/core
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: whattheduck-2024-11-10T165242
Choose a base ref
...
head repository: ducksmanager/core
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref

Commits on Nov 11, 2024

  1. Copy the full SHA
    4365962 View commit details
  2. Copy the full SHA
    5c21408 View commit details
  3. Copy the full SHA
    8debc83 View commit details
  4. Copy the full SHA
    08fb04c View commit details

Commits on Nov 13, 2024

  1. Bump dependencies, lint

    bperel committed Nov 13, 2024
    Copy the full SHA
    48d5e66 View commit details
  2. whattheduck: Cleanup

    bperel committed Nov 13, 2024
    Copy the full SHA
    2a795e6 View commit details
  3. whattheduck: Bump version

    bperel committed Nov 13, 2024
    Copy the full SHA
    40c900c View commit details

Commits on Nov 14, 2024

  1. whattheduck: Show version name

    bperel committed Nov 14, 2024
    Copy the full SHA
    40521f3 View commit details
  2. Copy the full SHA
    2bc3223 View commit details

Commits on Nov 16, 2024

  1. Copy the full SHA
    3ece1b6 View commit details
  2. Copy the full SHA
    406b063 View commit details
  3. whattheduck: Fix Sentry DSN, bump version

    Bump dependencies
    bperel committed Nov 16, 2024
    Copy the full SHA
    e810ed2 View commit details
  4. whattheduck: Fix slot notation

    bperel committed Nov 16, 2024
    Copy the full SHA
    54974d0 View commit details
  5. whattheduck: Fix slot notation

    bperel committed Nov 16, 2024
    Copy the full SHA
    97baaa1 View commit details
  6. Copy the full SHA
    9aed4fc View commit details
  7. Fix lockfile

    bperel committed Nov 16, 2024
    Copy the full SHA
    eff7e40 View commit details
  8. Copy the full SHA
    56fe8d5 View commit details
  9. Copy the full SHA
    a2dc88c View commit details
  10. Copy the full SHA
    c5ae55a View commit details
  11. Copy the full SHA
    24c0174 View commit details

Commits on Nov 18, 2024

  1. Copy the full SHA
    fc2f509 View commit details
  2. Copy the full SHA
    5ac7c24 View commit details
  3. whattheduck: Fix link to DM

    bperel committed Nov 18, 2024
    Copy the full SHA
    75f6cb7 View commit details
  4. Copy the full SHA
    3d99d5e View commit details
  5. Copy the full SHA
    618fc98 View commit details

Commits on Nov 19, 2024

  1. Copy the full SHA
    efdc3a8 View commit details
  2. Lint

    bperel committed Nov 19, 2024
    Copy the full SHA
    32cf042 View commit details
  3. Copy the full SHA
    c05e2eb View commit details

Commits on Nov 20, 2024

  1. Copy the full SHA
    dfa45a4 View commit details
  2. dumili: Allow to fill the issue price metadata, add warning if the cu…

    …rrent entry's selected story has a different amount of pages than the original
    bperel committed Nov 20, 2024
    Copy the full SHA
    20a167c View commit details
  3. Translated using Weblate (English)

    Currently translated at 99.8% (514 of 515 strings)
    
    Translation: DucksManager/web
    Translate-URL: https://hosted.weblate.org/projects/ducksmanager/web/en/
    bperel authored and weblate committed Nov 20, 2024
    Copy the full SHA
    a2193a0 View commit details
  4. Copy the full SHA
    b4f4898 View commit details
  5. web: Fix import

    bperel committed Nov 20, 2024
    Copy the full SHA
    de3dec4 View commit details

Commits on Nov 22, 2024

  1. whattheduck: Fix clash between 2 functions with the same name, fix Se…

    …ntry DSN, add logging, bump dependencies, bump version
    bperel committed Nov 22, 2024
    Copy the full SHA
    fe8058b View commit details

Commits on Nov 26, 2024

  1. Copy the full SHA
    10587f7 View commit details
  2. Bump dependencies, apply lint

    bperel committed Nov 26, 2024
    Copy the full SHA
    0b0d5c2 View commit details
  3. dumili: Styling improvements

    bperel committed Nov 26, 2024
    Copy the full SHA
    d206ff6 View commit details
  4. Copy the full SHA
    116fa3f View commit details

Commits on Nov 27, 2024

  1. dumili: Extract DumiliBook, show visible pages when scrolling through…

    … the gallery
    
    Bump dependencies
    bperel committed Nov 27, 2024
    Copy the full SHA
    6468e12 View commit details
  2. Copy the full SHA
    d42e175 View commit details

Commits on Nov 28, 2024

  1. Downgrade to Typescript 5.6

    bperel committed Nov 28, 2024
    Copy the full SHA
    25db32d View commit details
  2. Update to Node 22

    dumili: Fix docker build
    bperel committed Nov 28, 2024
    Copy the full SHA
    e9f78f4 View commit details

Commits on Dec 1, 2024

  1. dumili: Don't allow uploading images when creating an indexation, but…

    … only from the indexation gallery; allow deleting indexations
    bperel committed Dec 1, 2024
    Copy the full SHA
    ecdfa8b View commit details
  2. Bump Vite

    bperel committed Dec 1, 2024
    Copy the full SHA
    96c9835 View commit details

Commits on Dec 2, 2024

  1. Copy the full SHA
    b10e371 View commit details
  2. dumili: Extract TableOfContentsEntry and TableOfContentsPage, hide up…

    …load widget once we are done uploading images, allow to disassociate image URLs from their page
    bperel committed Dec 2, 2024
    Copy the full SHA
    73ae5b8 View commit details

Commits on Dec 3, 2024

  1. Copy the full SHA
    ad32e55 View commit details
  2. web: Update Book component

    bperel committed Dec 3, 2024
    Copy the full SHA
    9044778 View commit details

Commits on Dec 6, 2024

  1. Copy the full SHA
    0f9e458 View commit details

Commits on Dec 7, 2024

  1. dumili: Show hovered entry in gallery, show loading bulb icon when AI…

    … is working, temporarily disable tooltips
    bperel committed Dec 7, 2024
    Copy the full SHA
    a4a7d9e View commit details
Showing with 10,447 additions and 7,652 deletions.
  1. +4 −1 .github/workflows/daily.yml
  2. +5 −9 .github/workflows/deploy.yml
  3. +5 −5 .gitignore
  4. +3 −0 .husky/pre-commit
  5. +1 −1 .nvmrc
  6. +1 −1 README.md
  7. +5 −5 apps/coa-updater/package.json
  8. +1 −1 apps/cover-updater/scripts/import-covers.sh
  9. +1 −1 apps/cover-updater/scripts/sql/get-coa-covers.sql
  10. +7 −7 apps/duck-estimator/package.json
  11. +2 −2 apps/dumili/api/Dockerfile
  12. +1 −0 apps/dumili/api/docker-compose-dev.yml
  13. +2 −7 apps/dumili/api/index.ts
  14. +12 −15 apps/dumili/api/package.json
  15. +1 −1 apps/dumili/api/paddleocr/Dockerfile
  16. +2 −2 apps/dumili/api/paddleocr/requirements.txt
  17. +19 −34 apps/dumili/api/paddleocr/server.py
  18. +120 −68 apps/dumili/api/prisma/schema.prisma
  19. +20 −29 apps/dumili/api/services/_auth.ts
  20. +466 −303 apps/dumili/api/services/indexation/index.ts
  21. +147 −7 apps/dumili/api/services/indexation/kumiko.ts
  22. +81 −2 apps/dumili/api/services/indexation/ocr.ts
  23. +95 −62 apps/dumili/api/services/indexation/types.ts
  24. +37 −16 apps/dumili/api/services/indexations/index.ts
  25. +24 −14 apps/dumili/api/services/indexations/types.ts
  26. +10 −1 apps/dumili/eslint.config.mjs
  27. +29 −0 apps/dumili/nginx.conf
  28. +34 −34 apps/dumili/package.json
  29. +7 −4 apps/dumili/src/App.vue
  30. +59 −14 apps/dumili/src/components/AiTooltip.vue
  31. +131 −327 apps/dumili/src/components/DumiliBook.vue
  32. +149 −125 apps/dumili/src/components/Entry.vue
  33. +73 −0 apps/dumili/src/components/EntryStoryKindTooltip.vue
  34. +158 −15 apps/dumili/src/components/Gallery.vue
  35. +1 −1 apps/dumili/src/components/Issue.vue
  36. +1 −18 apps/dumili/src/components/IssueSelect.vue
  37. +18 −0 apps/dumili/src/components/StoryKindBadge.vue
  38. +1 −1 apps/dumili/src/components/StorySearch.vue
  39. +75 −50 apps/dumili/src/components/SuggestionList.vue
  40. +113 −176 apps/dumili/src/components/TableOfContents.vue
  41. +58 −0 apps/dumili/src/components/TableOfContentsEntry.vue
  42. +24 −0 apps/dumili/src/components/TableOfContentsPage.vue
  43. +9 −2 apps/dumili/src/components/TableResults.vue
  44. +13 −4 apps/dumili/src/components/TextEditor.vue
  45. +222 −0 apps/dumili/src/components/UploadModal.vue
  46. +0 −93 apps/dumili/src/components/UploadWidget.vue
  47. +9 −13 apps/dumili/src/components/{ → suggestions}/AiSuggestionIcon.vue
  48. +4 −4 apps/dumili/src/components/{ → suggestions}/IssueSuggestionList.vue
  49. +12 −9 apps/dumili/src/components/{ → suggestions}/IssueSuggestionModal.vue
  50. +50 −0 apps/dumili/src/components/suggestions/PageStoryKindTooltip.vue
  51. +37 −15 apps/dumili/src/components/{ → suggestions}/StorySuggestionList.vue
  52. +83 −0 apps/dumili/src/components/suggestions/StorySuggestionsTooltip.vue
  53. +7 −61 apps/dumili/src/composables/useAi.ts
  54. +3 −1 apps/dumili/src/composables/useDumiliSocket.ts
  55. +2 −3 apps/dumili/src/composables/useHint.ts
  56. +1 −0 apps/dumili/src/i18n.ts
  57. +2 −0 apps/dumili/src/main.ts
  58. +82 −63 apps/dumili/src/pages/index.vue
  59. +23 −115 apps/dumili/src/pages/indexation/[id].vue
  60. +3 −2 apps/dumili/src/stores/suggestions.ts
  61. +25 −2 apps/dumili/src/stores/ui.ts
  62. +65 −12 apps/dumili/src/style.scss
  63. +33 −3 apps/dumili/translations/messages.en.json
  64. +62 −0 apps/dumili/translations/messages.ta.json
  65. +22 −11 apps/dumili/types/storyKinds.ts
  66. +3 −4 apps/dumili/utils/entryPages.ts
  67. +1 −0 apps/edgecreator/.env
  68. +9 −0 apps/edgecreator/.env.prod
  69. +0 −28 apps/edgecreator/.gitignore
  70. +10 −0 apps/edgecreator/api/.env
  71. +2 −1 apps/edgecreator/api/Dockerfile
  72. +3 −0 apps/edgecreator/api/docker-compose.yml
  73. +5 −8 apps/edgecreator/api/index.ts
  74. +12 −13 apps/edgecreator/api/package.json
  75. +38 −43 apps/edgecreator/api/services/browse/index.ts
  76. +27 −18 apps/edgecreator/api/services/upload/index.ts
  77. +142 −0 apps/edgecreator/locales/ta.json
  78. +36 −36 apps/edgecreator/package.json
  79. +0 −1 apps/edgecreator/src/App.vue
  80. +4 −1 apps/edgecreator/src/components/EdgeGallery.vue
  81. +8 −4 apps/edgecreator/src/components/IssueSelect.vue
  82. +33 −27 apps/edgecreator/src/components/Upload.vue
  83. +0 −63 apps/edgecreator/src/components/from-dm/Issue.vue
  84. +0 −222 apps/edgecreator/src/components/from-dm/Medal.vue
  85. +0 −95 apps/edgecreator/src/components/from-dm/MedalProgress.vue
  86. +0 −37 apps/edgecreator/src/components/from-dm/Publication.vue
  87. +0 −75 apps/edgecreator/src/components/from-dm/UploadableEdgesCarousel.vue
  88. +2 −2 apps/edgecreator/src/composables/useRedirect.ts
  89. +2 −2 apps/edgecreator/src/composables/useStepOptions.ts
  90. +0 −1 apps/edgecreator/src/composables/useSvgUtils.ts
  91. +3 −3 apps/edgecreator/src/main.ts
  92. +23 −43 apps/edgecreator/src/pages/[...all].vue
  93. +35 −33 apps/edgecreator/src/pages/edit/[...all].vue
  94. +9 −9 apps/edgecreator/src/pages/upload.vue
  95. +0 −8 apps/edgecreator/src/stores/images.ts
  96. +4 −7 apps/edgecreator/src/stores/step.ts
  97. +6 −2 apps/edgecreator/tsconfig.json
  98. +43 −8 apps/edgecreator/vite.config.ts
  99. +1 −1 apps/edges/package.json
  100. +3 −3 apps/stats-updater/package.json
  101. +1 −1 apps/web/.env
  102. +1 −0 apps/web/eslint.config.mjs
  103. +34 −33 apps/web/package.json
  104. +5 −4 apps/web/src/components/Ago.vue
  105. +38 −24 apps/web/src/components/Book.vue
  106. +1 −2 apps/web/src/components/Bookcase.vue
  107. +9 −3 apps/web/src/components/BookcaseBook.vue
  108. +0 −1 apps/web/src/components/ContextMenuOnSaleByOthers.vue
  109. +5 −7 apps/web/src/components/InducksStory.vue
  110. +1 −1 apps/web/src/components/Issue.vue
  111. +5 −6 apps/web/src/components/IssueList.vue
  112. +15 −23 apps/web/src/components/MedalImage.vue
  113. +2 −2 apps/web/src/components/StarRating.vue
  114. +2 −0 apps/web/src/components/SuggestionList.vue
  115. +0 −3 apps/web/src/components/UploadableEdgesCarousel.vue
  116. +4 −4 apps/web/src/components/stats/ConditionsComponent.vue
  117. +1 −1 apps/web/src/composables/useDmSocket.ts
  118. +1 −2 apps/web/src/i18n.ts
  119. +4 −1 apps/web/src/layouts/default.vue
  120. +1 −1 apps/web/src/main.histoire.ts
  121. +1 −1 apps/web/src/main.ts
  122. +1 −1 apps/web/src/pages/collection/subscriptions.vue
  123. +5 −2 apps/web/src/pages/login.vue
  124. +5 −1 apps/web/src/pages/signup.vue
  125. +4 −1 apps/web/src/stores/coa.ts
  126. +1 −4 apps/web/src/stores/collection.ts
  127. +516 −516 apps/web/translations/messages.en.json
  128. +517 −0 apps/web/translations/messages.ta.json
  129. +1 −1 apps/web/tsconfig.json
  130. +1 −1 apps/whattheduck/.env
  131. +1 −1 apps/whattheduck/.nvmrc
  132. +9 −0 apps/whattheduck/android/.idea/compiler.xml
  133. +2 −2 apps/whattheduck/android/app/build.gradle
  134. +1 −1 apps/whattheduck/android/app/capacitor.build.gradle
  135. +3 −2 apps/whattheduck/android/app/src/main/AndroidManifest.xml
  136. +1 −1 apps/whattheduck/android/build.gradle
  137. +16 −16 apps/whattheduck/android/capacitor.settings.gradle
  138. +1 −1 apps/whattheduck/capacitor.config.json
  139. +45 −56 apps/whattheduck/eslint.config.mjs
  140. +1 −1 apps/whattheduck/histoire.setup.ts
  141. +1 −1 apps/whattheduck/ionic.config.json
  142. +4 −4 apps/whattheduck/ios/App/App.xcodeproj/project.pbxproj
  143. +78 −0 apps/whattheduck/ios/App/App.xcodeproj/xcshareddata/xcschemes/What The Duck.xcscheme
  144. +16 −16 apps/whattheduck/ios/App/Podfile
  145. +62 −74 apps/whattheduck/ios/App/Podfile.lock
  146. +8 −0 apps/whattheduck/ios/App/PrivacyInfo.xcprivacy
  147. +55 −53 apps/whattheduck/package.json
  148. +61 −49 apps/whattheduck/src/App.vue
  149. +9 −11 apps/whattheduck/src/components/Collection.vue
  150. +1 −1 apps/whattheduck/src/components/Condition.story.vue
  151. +6 −6 apps/whattheduck/src/components/ConditionWithPart.vue
  152. +1 −2 apps/whattheduck/src/components/CopyListButton.vue
  153. +5 −8 apps/whattheduck/src/components/EditIssuesButton.vue
  154. +8 −13 apps/whattheduck/src/components/EditIssuesConfirmCancelButtons.vue
  155. +11 −17 apps/whattheduck/src/components/FabHeaderButton.vue
  156. +1 −3 apps/whattheduck/src/components/FabHeaderButtonIcon.vue
  157. +2 −3 apps/whattheduck/src/components/FilterButton.vue
  158. +3 −3 apps/whattheduck/src/components/FullIssue.vue
  159. +20 −24 apps/whattheduck/src/components/List.vue
  160. +5 −5 apps/whattheduck/src/components/Navigation.vue
  161. +4 −4 apps/whattheduck/src/components/NavigationDrawer.vue
  162. +4 −6 apps/whattheduck/src/components/OfflineBanner.vue
  163. +12 −16 apps/whattheduck/src/components/OwnedIssueCopies.vue
  164. +10 −10 apps/whattheduck/src/components/OwnedIssueCopy.vue
  165. +1 −1 apps/whattheduck/src/components/Publication.vue
  166. +3 −3 apps/whattheduck/src/components/PurchaseGraph.vue
  167. +14 −10 apps/whattheduck/src/components/Row.vue
  168. +3 −6 apps/whattheduck/src/components/ScopedErrorTeleport.vue
  169. +2 −3 apps/whattheduck/src/components/ViewModesButton.vue
  170. +28 −12 apps/whattheduck/src/composables/useFormErrorHandling.ts
  171. +2 −3 apps/whattheduck/src/composables/useLocales.ts
  172. +3 −1 apps/whattheduck/src/composables/usePersistedData.ts
  173. +22 −10 apps/whattheduck/src/main.ts
  174. +8 −4 apps/whattheduck/src/stores/app.ts
  175. +1 −1 apps/whattheduck/src/stores/images.ts
  176. +2 −2 apps/whattheduck/src/views/AppWithPersistedData.vue
  177. +7 −8 apps/whattheduck/src/views/Authors.vue
  178. +1 −1 apps/whattheduck/src/views/CountryList.vue
  179. +13 −14 apps/whattheduck/src/views/CoverSearchResults.vue
  180. +8 −10 apps/whattheduck/src/views/Forgot.vue
  181. +49 −42 apps/whattheduck/src/views/IssueList.vue
  182. +32 −29 apps/whattheduck/src/views/Login.vue
  183. +1 −1 apps/whattheduck/src/views/PublicationList.vue
  184. +2 −3 apps/whattheduck/src/views/Recent.vue
  185. +6 −7 apps/whattheduck/src/views/Report.vue
  186. +12 −9 apps/whattheduck/src/views/Search.vue
  187. +12 −14 apps/whattheduck/src/views/Settings.vue
  188. +23 −23 apps/whattheduck/src/views/Signup.vue
  189. +14 −15 apps/whattheduck/src/views/Stats.vue
  190. +20 −19 apps/whattheduck/src/views/Suggestions.vue
  191. +2 −4 apps/whattheduck/src/views/Test.vue
  192. +13 −4 apps/whattheduck/translations/en.json
  193. +180 −180 apps/whattheduck/translations/sv.json
  194. +15 −45 apps/whattheduck/tsconfig.json
  195. +661 −0 orbindex.cpp
  196. +5 −4 package.json
  197. +1 −1 packages/api/Dockerfile
  198. +1 −1 packages/api/docker-compose-dev.yml
  199. +1 −1 packages/api/emails/bookstore-approved/index.ts
  200. +2 −2 packages/api/emails/bookstore-suggested/index.ts
  201. +2 −2 packages/api/emails/edge-model-ready/index.ts
  202. +2 −2 packages/api/emails/edge-photo-sent/index.ts
  203. +1 −1 packages/api/emails/edge-photo-sent/template.ejs
  204. +1 −1 packages/api/emails/edges-published-with-creator/index.ts
  205. +1 −1 packages/api/emails/edges-published-with-photographer/index.ts
  206. +2 −2 packages/api/emails/email.ts
  207. +2 −2 packages/api/emails/feedback-sent/index.ts
  208. +1 −1 packages/api/emails/presentation-sentence-approved/index.ts
  209. +1 −1 packages/api/emails/presentation-sentence-refused/index.ts
  210. +2 −2 packages/api/emails/presentation-sentence-requested/index.ts
  211. +1 −1 packages/api/emails/reset-password/index.ts
  212. +1 −1 packages/api/emails/subscription-issue-added/index.ts
  213. +14 −14 packages/api/package.json
  214. +3 −3 packages/api/services/app/index.ts
  215. +37 −24 packages/api/services/bookcase/index.ts
  216. +19 −5 packages/api/services/coa/stories/index.ts
  217. +1 −10 packages/api/services/coa/types.ts
  218. +1 −1 packages/api/services/collection/issues/index.ts
  219. +8 −7 packages/api/services/collection/subscriptions/index.ts
  220. +2 −1 packages/api/services/edgecreator/models/index.ts
  221. +4 −9 packages/api/services/edges/index.ts
  222. +1 −1 packages/backup/.nvmrc
  223. +4 −4 packages/backup/package.json
  224. +8 −8 packages/prisma-schemas/package.json
  225. +35 −28 packages/prisma-schemas/schemas/coa/extended/index.ts
  226. +2 −2 packages/prisma-schemas/schemas/dm/schema.prisma
  227. 0 packages/prisma-schemas/util/groupBy.ts
  228. +1 −1 packages/prisma-schemas/wait-until-db-ready.bash
  229. +186 −135 packages/socket.io-client-services/index.ts
  230. +3 −2 packages/socket.io-client-services/package.json
  231. +4 −4 packages/socket.io-services/index.ts
  232. +2 −2 packages/socket.io-services/package.json
  233. +3 −3 packages/types/EditSubscription.ts
  234. +2 −2 packages/types/package.json
  235. +4,007 −3,229 pnpm-lock.yaml
  236. +12 −3 turbo.json
  237. +1 −1 util/ci/.nvmrc
  238. +1 −1 util/ci/package.json
  239. +3 −4 util/group-by/index.ts
  240. +2 −2 util/group-by/package.json
  241. +1 −1 util/lint/.nvmrc
  242. +8 −8 util/lint/package.json
5 changes: 4 additions & 1 deletion .github/workflows/daily.yml
Original file line number Diff line number Diff line change
@@ -27,6 +27,7 @@ jobs:
docker compose run --rm --no-deps coa-updater | ts "[%Y-%m-%d %H:%M:%S]"
- name: Run stats-updater
continue-on-error: true
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.PRODUCTION_SSH_HOST }}
@@ -41,6 +42,7 @@ jobs:
docker compose run --rm --no-deps stats-updater
- name: Run cover-updater
continue-on-error: true
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.PRODUCTION_SSH_HOST }}
@@ -55,6 +57,7 @@ jobs:
docker compose run --rm --no-deps cover-updater
- name: Run duck-estimator
continue-on-error: true
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.PRODUCTION_SSH_HOST }}
@@ -79,7 +82,7 @@ jobs:
script_stop: true
envs: REMOTE_ROOT
script: |
cd $REMOTE_ROOT
cd $REMOTE_ROOT/packages/api
docker compose run --rm --no-deps sprite-names-updater
- name: Run subscription-handler
14 changes: 5 additions & 9 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -47,10 +47,10 @@ jobs:
with:
version: 9.8.0

- name: Use Node.js 20
- name: Use Node.js 22
uses: actions/setup-node@v4
with:
node-version: 20
node-version: 22
cache: "pnpm"

- uses: oven-sh/setup-bun@v1
@@ -73,17 +73,13 @@ jobs:
- name: Retrieve pre-build files
run: |
pnpm i -g turbo
turbo -F "...[$lastSuccessfulCommit]" -F '!~dumili' -F '!~dumili-api' prod:transfer-files-pre
- name: Build apps
run: |
turbo -F "...[$lastSuccessfulCommit]" -F '!~dumili' -F '!~dumili-api' build
turbo -F '!~dumili' -F '!~dumili-api' prod:transfer-files-pre
- uses: docker/setup-buildx-action@v3

- name: Build and push Docker images
- name: Build apps
run: |
turbo -F "...[$lastSuccessfulCommit]" -F '!~ci' -F '!~dumili' -F '!~dumili-api' prod:build-docker
turbo -F "...[$lastSuccessfulCommit]" -F '!~ci' -F '!~dumili' -F '!~dumili-api' build prod:build-docker
- name: Send post-build files
run: |
10 changes: 5 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
!.gitkeep
.DS_Store
.eslintcache
.eslintrc-auto-import.json
@@ -11,18 +12,17 @@
**/.eslintcache
**/.turbo/
**/.venv
**/*.js.map
**/auto-imports.d.ts
**/bundle.mjs
**/components.d.ts
**/index.js
/vendor/
apps/edges/edges
!apps/edges/edges/.gitkeep
/vendor/
**/bundle.mjs
**/index.js
**/*.js.map
dist
dist-ssr
local.properties
node_modules
output-metadata.json
packages/api/pastec-*.dat
!.gitkeep
3 changes: 3 additions & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm use
pnpm lint
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v20
v22
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -19,6 +19,6 @@ Related projects :

### Prerequisites

- [Node.js](https://nodejs.org/en/) 20
- [Node.js](https://nodejs.org/en/) 22
- [Docker](https://www.docker.com/)
- Some Unix or WSL2 environment
10 changes: 5 additions & 5 deletions apps/coa-updater/package.json
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
{
"name": "~coa-updater",
"scripts": {
"build": "bun build --target bun --sourcemap index.ts --outfile bundle.mjs",
"build": "bun build --target bun index.ts --outfile bundle.mjs",
"prod:transfer-files-post": "pnpm -F '~ci' prod:transfer-files apps/coa-updater/docker-compose.yml:@apps/coa-updater/docker-compose.yml"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"csv-generate": "^4.4.1",
"csv-parse": "^5.5.6",
"csv-generate": "^4.4.2",
"csv-parse": "^5.6.0",
"mariadb": "^3.4.0"
},
"devDependencies": {
"@types/bun": "latest",
"@types/node": "^20.17.6",
"typescript": "^5.6.3"
"@types/node": "^22.10.2",
"typescript": "^5.7.2"
},
"module": "index.ts",
"type": "module"
2 changes: 1 addition & 1 deletion apps/cover-updater/scripts/import-covers.sh
Original file line number Diff line number Diff line change
@@ -5,4 +5,4 @@ COVER_LIST_EXPORT_FILE=/home/covers.csv
echo "Exporting covers from the COA database..."
mysql -h ${MYSQL_COA_HOST} -uroot -p${MYSQL_ROOT_PASSWORD} ${MYSQL_COA_DATABASE} </home/scripts/sql/get-coa-covers.sql | sed 's/\t/,/g' >${COVER_LIST_EXPORT_FILE} &&
echo "Importing covers into the covers database..." &&
mysql -uroot -p${MYSQL_ROOT_PASSWORD} -h ${MYSQL_COVER_INFO_HOST} --local-infile=1 ${MYSQL_COVER_INFO_DATABASE} -e "LOAD DATA LOCAL INFILE \"${COVER_LIST_EXPORT_FILE}\" IGNORE INTO TABLE covers FIELDS TERMINATED BY ',' IGNORE 1 LINES (issuecode,sitecode,url);"
mysql -uroot -p${MYSQL_ROOT_PASSWORD} -h ${MYSQL_COVER_INFO_HOST} --local-infile=1 ${MYSQL_COVER_INFO_DATABASE} -e "LOAD DATA LOCAL INFILE \"${COVER_LIST_EXPORT_FILE}\" IGNORE INTO TABLE covers FIELDS TERMINATED BY ',' IGNORE 1 LINES (issuecode,sitecode,url)"
2 changes: 1 addition & 1 deletion apps/cover-updater/scripts/sql/get-coa-covers.sql
Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@
(
SELECT MIN(position)
FROM inducks_entry e
WHERE entry.issuecode = e.issuecode AND position NOT LIKE 'p%'
WHERE entry.issuecode = e.issuecode
GROUP BY e.issuecode
)
AND issuecode != '';
14 changes: 7 additions & 7 deletions apps/duck-estimator/package.json
Original file line number Diff line number Diff line change
@@ -2,34 +2,34 @@
"name": "~duck-estimator",
"version": "1.0.0",
"engines": {
"node": ">=20.0.0 <21.0.0"
"node": ">=22.0.0 <23.0.0"
},
"author": {
"email": "brunoperel@gmail.com",
"name": "Bruno Perel"
},
"scripts": {
"build": "bun build --target node --sourcemap index.ts --outdir dist && mv dist/index.js bundle.mjs && rm -rf dist",
"build": "bun build --target node index.ts --outdir dist && mv dist/index.js bundle.mjs && rm -rf dist",
"start": "bun --inspect run --watch index.ts",
"prod:build-docker": "REPO_NAME=ghcr.io/bperel/duck-estimator pnpm -F '~ci' prod:build-docker -f apps/duck-estimator/Dockerfile",
"prod:transfer-files-pre": "pnpm -F '~ci' prod:transfer-files @apps/duck-estimator/.env.local:apps/duck-estimator/.env",
"prod:transfer-files-post": "pnpm -F '~ci' prod:transfer-files apps/duck-estimator/docker-compose.yml:@apps/duck-estimator/docker-compose.yml"
},
"dependencies": {
"bedetheque-scraper": "^3.2.0",
"csv-parse": "^5.5.6",
"csv-parse": "^5.6.0",
"csv-writer": "^1.6.0",
"dotenv": "^16.4.5",
"electron": "^32.2.3",
"dotenv": "^16.4.7",
"electron": "^32.2.7",
"playwright-firefox": "~1.47.2",
"yargs": "^17.7.2",
"~prisma-schemas": "workspace:*"
},
"devDependencies": {
"@types/node": "^20.17.6",
"@types/node": "^22.10.2",
"@types/yargs": "^17.0.33",
"tsc-alias": "^1.8.10",
"tsx": "^4.19.2",
"typescript": "^5.6.3"
"typescript": "^5.7.2"
}
}
4 changes: 2 additions & 2 deletions apps/dumili/api/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
FROM node:20-slim
FROM node:22-slim
LABEL org.opencontainers.image.authors="Bruno Perel"
WORKDIR /app

COPY packages/prisma-schemas/client_coa/libquery_engine-debian-openssl-3.0.x.so.node /tmp/prisma-engines/
COPY apps/dumili/api/client_dumili/libquery_engine-debian-openssl-3.0.x.so.node /tmp/prisma-engines/
COPY apps/dumili/api/prisma/client_dumili/libquery_engine-debian-openssl-3.0.x.so.node /tmp/prisma-engines/

COPY apps/dumili/api/.env /app/
COPY apps/dumili/api/bundle.mjs /app/
1 change: 1 addition & 0 deletions apps/dumili/api/docker-compose-dev.yml
Original file line number Diff line number Diff line change
@@ -12,6 +12,7 @@ services:
- "8006:8081"
volumes:
- /root/.paddleocr
- ./paddleocr/server.py:/server.py
build:
context: ../../..
dockerfile: apps/dumili/api/paddleocr/Dockerfile
9 changes: 2 additions & 7 deletions apps/dumili/api/index.ts
Original file line number Diff line number Diff line change
@@ -39,17 +39,12 @@ export type SessionDataWithIndexationId = {
indexationId: string;
};
export type SessionData = { user: SessionUser };
export class ServerWithData<Data extends object> extends Server<
Record<string, never>,
Record<string, never>,
Record<string, never>,
Data
> {}

export type NamespaceWithData<
Services extends EventsMap,
ServerSentEvents extends EventsMap = object,
Data extends object = object,
> = Namespace<Services, Record<string, never>, Record<string, never>, Data>;
> = Namespace<Services, ServerSentEvents, Record<string, never>, Data>;

export const prisma = new PrismaClient();

27 changes: 12 additions & 15 deletions apps/dumili/api/package.json
Original file line number Diff line number Diff line change
@@ -3,34 +3,31 @@
"type": "module",
"version": "1.0.0",
"engines": {
"node": ">=20.0.0 <21.0.0"
"node": ">=22.0.0 <23.0.0"
},
"scripts": {
"clean": "rm -rf dist",
"build": "bun build --target node --sourcemap index.ts --outfile bundle.mjs",
"build": "bun build --target node index.ts --outfile bundle.mjs",
"prisma-pull-generate": "prisma db pull && prisma generate",
"prisma-generate": "prisma generate",
"prisma-migrate": "prisma migrate deploy",
"dev:setup": "docker compose -f docker-compose-dev.yml up --force-recreate -d",
"dev:blocking": "bash ../../../packages/prisma-schemas/wait-until-db-ready.bash && prisma migrate deploy && prisma generate",
"dev": "concurrently --kill-others-on-fail -n typecheck,bun \"tsc --noEmit\" \"bun --inspect run --hot index.ts\"",
"dev": "docker compose -f docker-compose-dev.yml up --force-recreate -d && bash ../../../packages/prisma-schemas/wait-until-db-ready.bash && prisma migrate deploy && prisma generate && concurrently --kill-others-on-fail -n docker-compose,typecheck \"docker compose -f docker-compose-dev.yml logs -f\" \"tsc --noEmit\"",
"prod:deploy": "DIR=apps/dumili/api pnpm -F '~ci' prod:docker-compose-up",
"prod-build-docker-api": "REPO_NAME=ghcr.io/bperel/dumili-api pnpm -F '~ci' prod:build-docker -f apps/dumili/api/Dockerfile",
"prod-build-docker-kumiko": "REPO_NAME=ghcr.io/bperel/kumiko pnpm -F '~ci' prod:build-docker -f apps/dumili/kumiko/Dockerfile",
"prod-build-docker-paddleocr": "REPO_NAME=ghcr.io/bperel/paddleocr pnpm -F '~ci' prod:build-docker -f apps/dumili/paddleocr/Dockerfile",
"prod-build-docker-kumiko": "REPO_NAME=ghcr.io/bperel/kumiko pnpm -F '~ci' prod:build-docker -f apps/dumili/api/kumiko/Dockerfile",
"prod-build-docker-paddleocr": "REPO_NAME=ghcr.io/bperel/paddleocr pnpm -F '~ci' prod:build-docker -f apps/dumili/api/paddleocr/Dockerfile",
"prod:build-docker": "pnpm run '/^prod-build-docker-/'",
"prod:transfer-files-pre": "pnpm -F '~ci' prod:transfer-files @apps/dumili/api/.env.prod.local:apps/dumili/api/.env",
"prod:transfer-files-post": "pnpm -F '~ci' prod:transfer-files apps/dumili/api/docker-compose.yml:@apps/dumili/api/docker-compose.yml"
},
"dependencies": {
"@prisma/client": "^5.22.0",
"@sentry/node": "^8.37.1",
"axios": "^1.7.7",
"@prisma/client": "^6.1.0",
"@sentry/node": "^8.47.0",
"axios": "^1.7.9",
"busboy": "^1.6.0",
"cloudinary": "^1.41.3",
"dotenv": "^16.4.5",
"dotenv": "^16.4.7",
"jsonwebtoken": "^9.0.2",
"pdf2pic": "^3.1.3",
"sharp": "^0.33.5",
"socket.io": "^4.8.1",
"~api": "workspace:*",
@@ -43,9 +40,9 @@
"@types/busboy": "^1.5.4",
"@types/i18n": "^0.13.12",
"@types/jsonwebtoken": "^9.0.7",
"@types/node": "^20.17.6",
"@types/node": "^22.10.2",
"concurrently": "^9.1.0",
"prisma": "^5.22.0",
"typescript": "^5.6.3"
"prisma": "^6.1.0",
"typescript": "^5.7.2"
}
}
2 changes: 1 addition & 1 deletion apps/dumili/api/paddleocr/Dockerfile
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@ RUN cd openssl-1.1.1v && ./config && make -j$(nproc) && make test

FROM python:3.9-slim

RUN apt update && apt install -y --no-install-recommends libgl1-mesa-glx libgomp1 libglib2.0-0 gcc python3-dev && apt clean
RUN apt update && apt install -y --no-install-recommends libgl1-mesa-glx libgomp1 libglib2.0-0 gcc python3-dev patch && apt clean

COPY --from=libs /home/openssl-1.1.1v/libcrypto.so.1.1 /lib/
COPY --from=libs /home/openssl-1.1.1v/libssl.so.1.1 /lib/
4 changes: 2 additions & 2 deletions apps/dumili/api/paddleocr/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
paddleocr>=2.7.0.2
paddlepaddle>=2.6.0
paddleocr>=2.8.1
paddlepaddle>=3.0.0b1
53 changes: 19 additions & 34 deletions apps/dumili/api/paddleocr/server.py
100644 → 100755
Original file line number Diff line number Diff line change
@@ -4,10 +4,8 @@
utils.run_check()
from paddleocr import PaddleOCR
from http.server import BaseHTTPRequestHandler, HTTPServer
import random
import json
import os
import base64

# select countrycode, GROUP_CONCAT(languagecode ORDER BY entries_with_language DESC) AS languages
# from (select countrycode, coalesce(inducks_entry.languagecode, ip.languagecode) as languagecode, count(*) as entries_with_language
@@ -332,42 +330,29 @@

class PaddleOCRRequestHandler(BaseHTTPRequestHandler):
def do_POST(self):
content_length = int(self.headers['Content-Length'])
base64Text = self.rfile.read(content_length)
content_length = int(self.headers['Content-Length'])
post_data = json.loads(self.rfile.read(content_length))
url = post_data['url']
language = post_data['language']

file_name = ''.join((random.choice('abcdefghi') for i in range(5))) + '.png'
try:
file_content = base64.b64decode(base64Text)
with open(file_name,"wb") as f:
f.write(file_content)
except Exception as e:
print(str(e))

result = None
# result = ocr_languages['french'].ocr(file_name, cls=True)
# result = result[0]
if result is None:
os.remove(file_name)
self.send_response(200)
self.send_header('Content-type', 'application/json')
self.end_headers()
self.wfile.write(json.dumps([]).encode())
return

boxes = [line[0] for line in result]
texts = [line[1][0] for line in result]
scores = [line[1][1] for line in result]
os.remove("tmp.jpg") if os.path.exists("tmp.jpg") else None
result = ocr_languages[language].ocr(url, cls=True)
result = result[0]

converted_data = []
for i in range(len(boxes)):
converted_item = {
"box": boxes[i],
"text": texts[i],
"confidence": scores[i]
}
converted_data.append(converted_item)
if result is not None:
boxes = [line[0] for line in result]
texts = [line[1][0] for line in result]
scores = [line[1][1] for line in result]

for i in range(len(boxes)):
converted_item = {
"box": boxes[i],
"text": texts[i],
"confidence": scores[i]
}
converted_data.append(converted_item)

os.remove(file_name)
self.send_response(200)
self.send_header('Content-type', 'application/json')
self.end_headers()
Loading