Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
235 commits
Select commit Hold shift + click to select a range
fbe5719
feat(filters): add date range picker filter and integrated reset logic
lucaslobatob Oct 31, 2025
8f7aefc
Merge branch 'stage' into add-date-filter-to-verification-request
lucaslobatob Oct 31, 2025
7709f7c
Update verificationRequest.json
lucaslobatob Oct 31, 2025
8016ee7
Update verificationRequest.json
lucaslobatob Oct 31, 2025
30c5f03
refactor(verification-request): extract date filter to util and reduc…
lucaslobatob Oct 31, 2025
41cfc7a
remove unnecessary imports
lucaslobatob Oct 31, 2025
8541eeb
poc: dashboard cop30
Nov 6, 2025
5b085b3
refactor(dashboard): Move component to parent for context access
LuizFNJ Nov 6, 2025
3d1f820
Merge branch 'stage' into add-date-filter-to-verification-request
LuizFNJ Nov 6, 2025
916581f
add filter by data range after rebase
LuizFNJ Nov 6, 2025
afd3e59
Fix: handleResetFilters
LuizFNJ Nov 6, 2025
1923af8
feat(filters): apply inclusive date range by normalizing start and en…
lucaslobatob Nov 6, 2025
21801f7
style(filters): add responsive margin to DateRangePicker on small scr…
lucaslobatob Nov 6, 2025
903f81e
feat(cop30): localize COP30 section
Jamerson-santos Nov 7, 2025
3c6d575
poc: Dashboard for verification request
snowmous3 Oct 30, 2025
df9929a
Resolved build error
LuizFNJ Nov 6, 2025
1b36821
updating sintax import and deleting identical phrase
lucaslobatob Nov 7, 2025
e3d1c77
Adding new dashboard
LuizFNJ Nov 8, 2025
a8bfd51
Refactor and add toggle button
LuizFNJ Nov 8, 2025
54b86a1
Finishing the Verification Requests Dashboard UI
LuizFNJ Nov 10, 2025
ea051f2
Sonar cloud: Resolve some comments
LuizFNJ Nov 10, 2025
a721246
add migrate
LuizFNJ Nov 10, 2025
653960e
Removing telegram from enum
LuizFNJ Nov 10, 2025
aad1cd4
Fixing unnecessary migrations
LuizFNJ Nov 11, 2025
777c935
security: Add guard to ensure totalCount is not zero
LuizFNJ Nov 11, 2025
137022d
Creating an endpoint to retrieve COP30 topics and making the dashboar…
lucaslobatob Nov 12, 2025
be773e9
chore: add down function to migration for rollback safety
LuizFNJ Nov 12, 2025
7b28240
Merge pull request #2093 from AletheiaFact/add-date-filter-to-verific…
caneppelevitor Nov 13, 2025
b8a76bf
Updating reviews related to the COP30 topic, styling the dashboard, a…
lucaslobatob Nov 13, 2025
15a76b3
Merge branch 'stage' into feature/cop30-statistics-endpoint
lucaslobatob Nov 13, 2025
8628b67
tracking page: MVP
LuizFNJ Oct 19, 2025
4cb2db1
feat(tracking): rename targetId to verificationRequestId and use hist…
LuizFNJ Oct 19, 2025
b1e4c35
refactor(controller, service): better typing and error handling
LuizFNJ Oct 19, 2025
95f19dd
Refactor(tracking): Optimizes the API response for Stepper
LuizFNJ Oct 19, 2025
2b09a4c
Creating a type for "getByTargetIdModelAndType"
LuizFNJ Oct 21, 2025
3c0ec13
Fix const naming and typing file path
LuizFNJ Oct 25, 2025
b4d147b
Refactor(api-client): reusing history endpoint to create page
LuizFNJ Oct 29, 2025
ee0f988
feat(ui/tracking): Implement core visual design for status stepper
LuizFNJ Oct 30, 2025
410cace
chore: resolve sonar comment
LuizFNJ Oct 30, 2025
04727e4
Making URL_PATTERN less rigid for forms (#2136)
LuizFNJ Nov 14, 2025
3e77b6a
Feat: Wikidata Aliases & Topic Timestamps (#2138)
caneppelevitor Nov 14, 2025
7933c1a
fix: migrations coded wrong and with missing types
snowmous3 Nov 14, 2025
7e6dd9b
feat: add new typing interface for review, sentence, sentence topics …
lucaslobatob Nov 17, 2025
2faad84
feat(endpoint): add a new endpoint to retrieve all sentence stats rel…
lucaslobatob Nov 17, 2025
cd8a9d3
feat: add endpoint stats, creating word translations for the topics, …
lucaslobatob Nov 17, 2025
f38b657
FIX/CHORE Adding timestamps for modules (#2141)
snowmous3 Nov 18, 2025
6fbc5ef
feat: creating a stats endpoint for cop30 topics, adding typing and c…
lucaslobatob Nov 18, 2025
8547553
refactor: avoiding duplication in the cop30 topic filters
lucaslobatob Nov 18, 2025
eb2389c
feat: updating section cop30 to retrieve stats values ​​from the backend
lucaslobatob Nov 18, 2025
1661e3e
Merge branch 'stage' into poc-verification-request-dashboard
LuizFNJ Nov 18, 2025
5be3dcf
fix: preventing review tasks without personality to break postprocess…
caneppelevitor Nov 20, 2025
858fa27
fix: generateHref function for review task type image without persona…
caneppelevitor Nov 21, 2025
48867c0
fix(topic): adjusting large topics with maxWidth to prevent card brea…
lucaslobatob Nov 21, 2025
e4fffcf
Merge pull request #2159 from AletheiaFact/fix/large-topics-temp
caneppelevitor Nov 24, 2025
b623001
feat(endpoint): add IsPublic decorator and remove unnecessary typing
lucaslobatob Nov 24, 2025
f15e233
refactor(auth): replace deprecated IsPublic with Auth({ public: true })
lucaslobatob Nov 24, 2025
eb090ef
Fix: Input Component Overlapping on Reinsert
Jamerson-santos Nov 24, 2025
54c497d
Merge pull request #2147 from AletheiaFact/fix/migrations-wrong
caneppelevitor Nov 24, 2025
0fea7c3
refactor(sentence): rename function, fix endpoint, and standardize cl…
lucaslobatob Nov 24, 2025
b57291b
Merge pull request #2142 from AletheiaFact/feature/cop30-statistics-e…
caneppelevitor Nov 25, 2025
d46faf4
Merge pull request #2160 from AletheiaFact/fix/input-overlap-on-reinsert
caneppelevitor Nov 25, 2025
b6e9519
feat: add review button for images and fix SVG centralization
caneppelevitor Nov 27, 2025
78ea5f9
feat(ui): adjust the spacing of the Stats Cards to precent breakage o…
lucaslobatob Nov 27, 2025
91fa8f6
Merge pull request #2164 from AletheiaFact/fix-stats-card-styled
caneppelevitor Nov 27, 2025
9cf42f6
feat: add history button and ontegration with claim history route
lucaslobatob Nov 28, 2025
c6389f8
Fix: Remove trailing paragraph from API response to prevent duplicate…
Jamerson-santos Dec 2, 2025
d062cfc
Change the home page SEO description
thesocialdev Dec 4, 2025
7849e6d
feat: add support for History route using TargetModel and optional pa…
lucaslobatob Dec 4, 2025
57829c4
Merge branch 'stage' into add-toolbar-history-in-claim-review
lucaslobatob Dec 4, 2025
e4eb2ba
Merge pull request #2169 from AletheiaFact/add-toolbar-history-in-cla…
caneppelevitor Dec 4, 2025
f7dc1eb
Merge pull request #2163 from AletheiaFact/feature/show-report-button…
caneppelevitor Dec 4, 2025
70b152f
fix(style): changing the color of the Verification Request card chip …
lucaslobatob Dec 4, 2025
e2c77f8
Merge pull request #2177 from AletheiaFact/fix-priority-chip-style
caneppelevitor Dec 5, 2025
6c9f760
Merge pull request #2173 from AletheiaFact/fix/remove-trailing-p-befo…
caneppelevitor Dec 18, 2025
e757107
feature: adds identified personalities on verification request drawer
caneppelevitor Nov 18, 2025
da5a9f9
fix: no sql injection protection on wikidataservice and code smells fix
caneppelevitor Nov 18, 2025
4e0a576
Merge pull request #2149 from AletheiaFact/feature/identified-persona…
caneppelevitor Jan 5, 2026
2f007ad
feat: migrate high-priority admin endpoints to unified @Auth() decora…
snowmous3 Oct 25, 2025
fadc1e8
feat: remove auth-migration-mapping.md
snowmous3 Oct 27, 2025
566cd86
feat: migrate remaning deprecated decorators
caneppelevitor Jan 5, 2026
ba8f92c
refactor: overhaul dashboard architecture and localization logic
LuizFNJ Jan 6, 2026
3a6d039
test(login):Adding login flow testing.
lucaslobatob Jan 7, 2026
02a18ad
test(login): add the contains clause to ensure the user receives the …
lucaslobatob Jan 8, 2026
6cf75f5
test(login): fix logout test by registering intercept before action
lucaslobatob Jan 9, 2026
ed910e1
changing the down migration to no-op
LuizFNJ Jan 12, 2026
324bf37
test: add unit tests for VR dashboard and setup shared test module
LuizFNJ Jan 12, 2026
c8fa2e1
fix: fix build errors in DTOs and timeAgo helper
LuizFNJ Jan 12, 2026
0982578
Merge branch 'stage' into poc-verification-request-dashboard
LuizFNJ Jan 12, 2026
923ecee
fix ESlint error
LuizFNJ Jan 13, 2026
323023a
changing file names
LuizFNJ Jan 13, 2026
956a964
Merge pull request #2185 from AletheiaFact/feature/login-test
caneppelevitor Jan 13, 2026
6ff3b7b
fix comments
LuizFNJ Jan 14, 2026
77b070b
test: implement Object Mother pattern for VerificationRequest mocks
LuizFNJ Jan 14, 2026
400cb85
Merge pull request #2091 from AletheiaFact/poc-verification-request-d…
caneppelevitor Jan 16, 2026
4a63929
refactor: optimize history module architecture and fix pagination
LuizFNJ Jan 17, 2026
389f221
finishing some types and correcting sonar cloud comments
LuizFNJ Jan 18, 2026
4e9373e
feat: add migration to convert string user IDs to ObjectId in history…
LuizFNJ Jan 18, 2026
ac2e7dc
refactor: move stats logic to dedicated service and update unit test …
LuizFNJ Jan 18, 2026
33403c2
test: add base spec with manual provider mocking for verification-req…
LuizFNJ Jan 18, 2026
5e39dae
removing logic from the verification request service
LuizFNJ Jan 18, 2026
b3dc400
correct name and import correctly
LuizFNJ Jan 20, 2026
9b25587
adding specific typing for users and improving logic for saving inter…
LuizFNJ Jan 20, 2026
3544e1d
add migration flag to revert only changed users
LuizFNJ Jan 20, 2026
2777140
adding a lookup conditional that runs only when user is objectid
LuizFNJ Jan 20, 2026
ea57f73
adding type and conditional safety to getDescriptionForHide
LuizFNJ Jan 20, 2026
73a70c8
fix comments: extract verification request mocks and add error handli…
LuizFNJ Jan 20, 2026
cd5b719
Merge pull request #2191 from AletheiaFact/Refactor/Decouple-Stats-lo…
caneppelevitor Jan 21, 2026
ecf536e
feat: zod implementation and endpoint test
lucaslobatob Jan 23, 2026
4c3ef91
test: add unit tests for image claim review endpoints
lucaslobatob Jan 23, 2026
bc8df79
refactor: improve types and add validation for targetId and targetModel
LuizFNJ Jan 24, 2026
7d558cc
test: add unit tests for history service and controller with mocks
LuizFNJ Jan 24, 2026
a3c2b36
fix: update chatbot user payload to use clientId and add frontend typ…
LuizFNJ Jan 24, 2026
14955b7
feat(migration): convert history user strings to M2M objects
LuizFNJ Jan 24, 2026
226ca00
fix imports
LuizFNJ Jan 24, 2026
34b5777
test: add unit tests and improve data_hash validation
lucaslobatob Jan 26, 2026
67b66a2
removing IPersonalityService to stop breaking CI
lucaslobatob Jan 26, 2026
60f03dc
chore: bump node version
Nov 4, 2025
8dd4d76
Validate data_hash with Zod in image service
lucaslobatob Jan 27, 2026
826c11e
fix getByDataHashDto import
lucaslobatob Jan 27, 2026
eb093c1
Fix: using flex display and centering the banner
LuizFNJ Jan 26, 2026
e79f144
Fix lint issues in claim controller tests
lucaslobatob Jan 27, 2026
a7ee00a
Merge pull request #2097 from AletheiaFact/bump-node-version
caneppelevitor Jan 27, 2026
de33a5c
Merge pull request #2200 from AletheiaFact/Fix-cop-30-banner-decentra…
caneppelevitor Jan 28, 2026
2f07304
fix(home-feed): fix HomeFeedList rendering with Grid container
LuizFNJ Jan 28, 2026
cfaf8d5
feat: recaptcha verification on user creation
Jan 26, 2026
3b63e0f
feat: sign up cypress tests
Jan 28, 2026
fc0aaaf
fix: code smells
Jan 28, 2026
f3736f8
fix: simplified test coverage and fix tests checks
Jan 28, 2026
453c5a8
fix: cypress tests and tsconfig update
Jan 29, 2026
624c653
Merge pull request #2204 from AletheiaFact/search-on-the-homepage-is-…
caneppelevitor Jan 29, 2026
f663aca
feat: improve claim mocks
Jan 29, 2026
ef9d055
Merge pull request #2198 from AletheiaFact/2197-recaptcha-on-sign-up
caneppelevitor Jan 29, 2026
36bda30
chore: optimize test suite performance and fix errors
snowmous3 Nov 14, 2025
c190d2f
perf: enable parallel test execution with upsert operations
snowmous3 Nov 14, 2025
9a11c9c
chore: improve test suite robustness and maintainability
Jan 29, 2026
e016c25
Merge pull request #2077 from AletheiaFact/feature/migrate-admin-auth…
caneppelevitor Jan 29, 2026
12dd69f
Merge pull request #2148 from AletheiaFact/chore/optimize-tests
caneppelevitor Jan 29, 2026
a19223c
fix: properly json parsing sitekey
Jan 30, 2026
5156f73
Merge pull request #2205 from AletheiaFact/fix/json-parse-site-key
caneppelevitor Jan 30, 2026
486b489
Merge pull request #2135 from AletheiaFact/Migrating-to-correct-sourc…
caneppelevitor Feb 3, 2026
513461c
draft: track issues automation
Feb 3, 2026
388d29f
UI: standardize translations and extract tag logic into helpers
LuizFNJ Feb 3, 2026
cafd687
code smells
LuizFNJ Feb 3, 2026
131ce7f
remove comment
Feb 3, 2026
3195730
feat: enhance code quality
Feb 4, 2026
e9bd950
adding fallback in getSeverityColor
LuizFNJ Feb 4, 2026
3e4c662
Merge pull request #2207 from AletheiaFact/Refactor/improve-and-refac…
caneppelevitor Feb 4, 2026
9b27640
unifying M2M types
LuizFNJ Feb 4, 2026
9cd53e2
chore(deps): update dependencies with minimal risk
lucaslobatob Feb 4, 2026
21588f3
setting isURLField to true
LuizFNJ Feb 4, 2026
dad5339
fix: allow users to remove topics from verification requests
LuizFNJ Feb 5, 2026
b711ff9
Merge pull request #2189 from AletheiaFact/adding-support-for-externa…
caneppelevitor Feb 5, 2026
3339de2
Merge pull request #2214 from AletheiaFact/fix/source-form-url-valida…
caneppelevitor Feb 5, 2026
6d65f9f
refactor: linked issue graphql
Feb 5, 2026
cc76e95
refactor: restored regex to match template and draft PR on in progress
Feb 5, 2026
433b068
Merge pull request #2206 from AletheiaFact/track-issues-automation
caneppelevitor Feb 5, 2026
4cab2b4
chore(lint): remove unsed eslint-disable directives
lucaslobatob Feb 5, 2026
4e0a126
chore(lint): migrate to Eslint flat config
lucaslobatob Feb 5, 2026
9690f0f
fix(ci): migrate ESLint to flat config
lucaslobatob Feb 5, 2026
56de0c5
fix(ci): migrate ESLint to flat config
lucaslobatob Feb 5, 2026
ca7429f
Merge branch 'stage' into New-tracking-page-to-verification-request
LuizFNJ Feb 5, 2026
ce0e262
final adjustments after rebase
LuizFNJ Feb 5, 2026
7970913
Improving nomenclature
LuizFNJ Feb 5, 2026
3b4f744
refactor/docs: improve types and add explanatory comments
LuizFNJ Feb 5, 2026
60ebd92
refactor: consolidating into one job
Feb 5, 2026
b9a7c3b
Merge pull request #2220 from AletheiaFact/refactor/consolidation-iss…
caneppelevitor Feb 5, 2026
eb53888
feat(api): validate verificationRequestId using HEX24 pattern
LuizFNJ Feb 5, 2026
8bffde8
test(tracking): add unit tests and improve error handling in service …
LuizFNJ Feb 6, 2026
1eb6a5e
fix(eslint): use react version detection instead of hardcoded value
lucaslobatob Feb 6, 2026
bf94592
UI: Adding a classification chip to Kanban:
Zx06-C Feb 6, 2026
f792b2d
refactor: add VerificationRequestStatus enum and fix imports
LuizFNJ Feb 6, 2026
78063f8
refactor(tracking): implement strategy pattern and decouple business …
LuizFNJ Feb 6, 2026
6d6bc4f
Merge pull request #2213 from AletheiaFact/chore/deps-low-risk-updates
caneppelevitor Feb 9, 2026
6c99ad3
Merge pull request #2216 from AletheiaFact/fix/2195-remove-topics-bug
caneppelevitor Feb 9, 2026
79c4784
refactor: replace console.log with NestJS Logger and enhance Winston …
Feb 5, 2026
62304a2
feat: Add global exception filter for consistent error handling and l…
Feb 5, 2026
cd86bd0
feat: using crypto.randomUUID() intead of mathRandom and WinstonLogge…
Feb 9, 2026
4e2d58c
Merge pull request #2219 from AletheiaFact/refactor/improve-logging-i…
caneppelevitor Feb 9, 2026
9ad270f
resolving last comments
LuizFNJ Feb 9, 2026
460932f
option to disable field in dynamic form
LuizFNJ Feb 7, 2026
c7f10e7
refactor: standardize dynamic form for creation and editing
LuizFNJ Feb 8, 2026
f6ac65e
refactor: improve extra sources input and unify verification request …
LuizFNJ Feb 10, 2026
2bec47d
fix: Aligment on verification request dashboard itens and pie chart w…
Feb 10, 2026
c558655
Merge pull request #2233 from AletheiaFact/fix/verification-request-d…
caneppelevitor Feb 10, 2026
6ad80a6
refactor(namespaces): convert form to DynamicForm and fix slug update…
LuizFNJ Feb 10, 2026
d7e4064
refactor: convert badge creation and edition to dynamic form
LuizFNJ Feb 11, 2026
ca3929b
Code Smell: Impact Area field should be optional
LuizFNJ Feb 11, 2026
fcf85f5
fix: ensure api receives only the params to change
LuizFNJ Feb 12, 2026
067dc94
UI: Adding a classification chip to Kanban
Zx06-C Feb 12, 2026
dc257df
Merge pull request #2063 from AletheiaFact/New-tracking-page-to-verif…
caneppelevitor Feb 13, 2026
221d30b
Merge pull request #2242 from AletheiaFact/bug/2240-fix-user-namespac…
caneppelevitor Feb 13, 2026
1afad81
UI/Refactor: adding tracking card on verification request page and im…
LuizFNJ Feb 14, 2026
b1963a9
UX: add feedback when step date is missing
LuizFNJ Feb 14, 2026
e6e2473
test(tracking): adapt unit tests for currentStatus logic
LuizFNJ Feb 14, 2026
4057a4a
Fix: Remove trailing paragraph from reports stored in database (#2201)
Jamerson-santos Feb 17, 2026
413874c
solve comments
LuizFNJ Feb 17, 2026
a1ff9fb
Merge pull request #2246 from AletheiaFact/feature/verification-reque…
caneppelevitor Feb 18, 2026
2cba708
Merge branch 'stage' into Refactor/generalizing-drawer-forms
LuizFNJ Feb 18, 2026
6aed96c
fix: add typed props, null guard, and design cleanup to KanbanCard cl…
Feb 19, 2026
bd9fc00
Merge pull request #2222 from AletheiaFact/Adding-a-classification-ch…
caneppelevitor Feb 19, 2026
1d8d16f
flex start classification chip
Feb 19, 2026
ffebf55
Merge pull request #2251 from AletheiaFact/fix/classification-chip-po…
caneppelevitor Feb 19, 2026
5ffa1cc
solve comments
LuizFNJ Feb 19, 2026
3693f0a
Merge pull request #2231 from AletheiaFact/Refactor/generalizing-draw…
caneppelevitor Feb 20, 2026
498aa7e
chore: update langchain to latest version and typescript to v5
lucaslobatob Feb 20, 2026
71f1165
refactor: replace createOpenAIFunctionsAgent with createToolCallingAgent
lucaslobatob Feb 20, 2026
bd3abe5
refactor(ui): close drawer instead of triggering browser back on cancel
LuizFNJ Feb 21, 2026
f89fc96
fix: synchronize and sanitize source list to prevent validation error…
LuizFNJ Feb 21, 2026
f59b8cd
feat: allow creation of custom impact area not present in autocomplet…
LuizFNJ Feb 22, 2026
3f557f4
adding data-cy
LuizFNJ Feb 22, 2026
5cf4262
test: implement end-to-end tests for the verification request lifecycle
LuizFNJ Feb 22, 2026
f986bf3
fix cypress error
LuizFNJ Feb 22, 2026
83203d0
test: decouple creation and edition flows into separate test cases
LuizFNJ Feb 22, 2026
2d1f36a
test: navigate to verification request page using data hash identifier
LuizFNJ Feb 22, 2026
33b46f3
fix: resolve ansi-styles ESM conflict for @langchain/core
lucaslobatob Feb 23, 2026
6f22142
refactor(source-list): optimize state and add debounced input
LuizFNJ Feb 23, 2026
374fe18
fix comments
LuizFNJ Feb 23, 2026
c31503d
feat(auth): add global conditional utility for role verification
LuizFNJ Feb 24, 2026
b073086
chore: update nestjs/common from 9.2.0 to 10.4.22
lucaslobatob Feb 24, 2026
d133f27
chore: update @casl/ability from 6.7.3 to 6.8.0
lucaslobatob Feb 24, 2026
e7c8454
chore: update ai-sdk from 3.4.33 to 5.0.52
lucaslobatob Feb 24, 2026
d429e00
Merge pull request #2261 from AletheiaFact/chore/ai-sdk-update
caneppelevitor Feb 25, 2026
a1042f2
Merge pull request #2259 from AletheiaFact/chore/casl-ability-update
caneppelevitor Feb 25, 2026
5d96f8b
refactor(date): create date utils and replace direct MUI/dayjs usage
LuizFNJ Feb 25, 2026
5b3ae2c
fix: racing conditions on wikidata cache and using findOneAndUpdate f…
Feb 25, 2026
0aae946
Merge branch 'stage' into chore/nestjs-common-update
lucaslobatob Feb 25, 2026
4656e86
Merge pull request #2254 from AletheiaFact/cypress/creating-new-tests…
caneppelevitor Feb 25, 2026
96d58d6
Merge pull request #2267 from AletheiaFact/fix/wikidata-racing-condit…
caneppelevitor Feb 25, 2026
d8c151c
Merge pull request #2257 from AletheiaFact/chore/nestjs-common-update
caneppelevitor Feb 25, 2026
34ae09c
Merge branch 'stage' into chore/langchain-update
lucaslobatob Feb 25, 2026
3d91006
fix: migration to fix nested source arrays from legacy verification r…
Feb 25, 2026
2395307
fix: regenerate lockfile
lucaslobatob Feb 25, 2026
d7547c0
Merge pull request #2253 from AletheiaFact/chore/langchain-update
caneppelevitor Feb 25, 2026
446d78f
feat: fixing nested arrays on topics
Feb 26, 2026
c4c0615
Merge pull request #2268 from AletheiaFact/fix/nested-sources-array-m…
caneppelevitor Feb 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,4 @@ MONGO_MIGRATION_URL=
OPENAI_API_KEY=

ZENVIA_API_URL=
ZENVIA_API_TOKEN=
ZENVIA_API_TOKEN=
18 changes: 0 additions & 18 deletions .eslintignore

This file was deleted.

33 changes: 0 additions & 33 deletions .eslintrc.yml

This file was deleted.

4 changes: 2 additions & 2 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ jobs:
- name: Checkout
uses: actions/checkout@v2

- name: Use Node.js ${{ matrix.node-version }}
- name: Use Node.js 20.18.0
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
node-version: 20.18.0

- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/nodejs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.19.1]
node-version: [20.18.0]
steps:
- name: Checkout
uses: actions/checkout@v2
Expand All @@ -43,7 +43,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.19.1]
node-version: [20.18.0]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
Expand All @@ -62,7 +62,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.19.1]
node-version: [20.18.0]
steps:
- name: Checkout
uses: actions/checkout@v2
Expand Down
204 changes: 204 additions & 0 deletions .github/workflows/track-issues.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,204 @@
name: Track Issues on Project Board

on:
pull_request:
types: [opened, edited, reopened, ready_for_review]
branches: [develop, stage]
push:
branches: [stage, master]
workflow_dispatch:
inputs:
issue_number:
description: "Issue number to manually update"
required: false
target_status:
description: "Target status (In Progress, In Review, QA, Deployed)"
required: false
default: "In Review"

concurrency:
group: track-issues-${{ github.ref }}
cancel-in-progress: false

env:
PROJECT_NUMBER: 1

jobs:
update-project-board:
runs-on: ubuntu-latest
steps:
- name: Update issue status on project board
uses: actions/github-script@v7
with:
github-token: ${{ secrets.PROJECT_TOKEN }}
script: |
const projectNumber = parseInt('${{ env.PROJECT_NUMBER }}');
const owner = context.repo.owner;
const repo = context.repo.repo;
const eventName = context.eventName;
const ref = context.ref;

// --- Step 1: Determine target status and extract issue numbers ---

let targetStatusKey;
const issueNumbers = new Set();

if (eventName === 'pull_request') {
const isDraft = context.payload.pull_request.draft;
targetStatusKey = isDraft ? 'progress' : 'review';

const text = `${context.payload.pull_request.body || ''} ${context.payload.pull_request.title || ''}`;
const pattern = /related\s+ticket\s*:?\s*#(\d+)/gi;
let match;
while ((match = pattern.exec(text)) !== null) {
issueNumbers.add(match[1]);
}

console.log(`Event: pull_request (${isDraft ? 'draft' : 'ready'})`);

} else if (eventName === 'push') {
const branch = ref.replace('refs/heads/', '');
const statusMap = { stage: 'qa', master: 'deployed' };
targetStatusKey = statusMap[branch];

if (!targetStatusKey) {
console.log(`Push to unhandled branch: ${branch}`);
return;
}

// Find the merged PR for this push
const { data: prs } = await github.rest.pulls.list({
owner, repo,
state: 'closed',
sort: 'updated',
direction: 'desc',
per_page: 20
});

const mergedPR = prs.find(pr =>
pr.merge_commit_sha === context.sha && pr.merged_at
);

if (!mergedPR) {
console.log('No merged PR found for commit:', context.sha);
return;
}

console.log(`Event: push to ${branch} (merged PR #${mergedPR.number}: ${mergedPR.title})`);

const text = `${mergedPR.body || ''} ${mergedPR.title}`;
const pattern = /related\s+ticket\s*:?\s*#(\d+)/gi;
let match;
while ((match = pattern.exec(text)) !== null) {
issueNumbers.add(match[1]);
}

} else if (eventName === 'workflow_dispatch') {
const inputIssue = '${{ github.event.inputs.issue_number }}';
const inputStatus = '${{ github.event.inputs.target_status }}'.toLowerCase();

if (!inputIssue) {
console.log('No issue number provided');
return;
}

targetStatusKey = inputStatus;
issueNumbers.add(inputIssue);

console.log(`Event: manual trigger (issue #${inputIssue} → "${inputStatus}")`);

} else {
console.log(`Unhandled event: ${eventName}`);
return;
}

// --- Step 2: Validate we have issues to process ---

if (issueNumbers.size === 0) {
console.log('No linked issues found');
return;
}

console.log('Issues to update:', Array.from(issueNumbers).map(n => `#${n}`).join(', '));
console.log('Target status:', targetStatusKey);

// --- Step 3: Get project and status field info ---

const projectData = await github.graphql(`
query($owner: String!, $number: Int!) {
organization(login: $owner) {
projectV2(number: $number) {
id
field(name: "Status") {
... on ProjectV2SingleSelectField {
id
options { id name }
}
}
}
}
}
`, { owner, number: projectNumber });

const project = projectData.organization.projectV2;
const statusField = project.field;

const targetOption = statusField.options.find(o =>
o.name.toLowerCase().includes(targetStatusKey)
);

if (!targetOption) {
console.log(`Status option matching "${targetStatusKey}" not found`);
console.log('Available options:', statusField.options.map(o => o.name).join(', '));
return;
}

// --- Step 4: Update each issue on the project board ---

let successCount = 0;
let errorCount = 0;

for (const issueNumber of issueNumbers) {
try {
const issue = await github.rest.issues.get({
owner, repo,
issue_number: parseInt(issueNumber)
});

const addResult = await github.graphql(`
mutation($projectId: ID!, $contentId: ID!) {
addProjectV2ItemById(input: {projectId: $projectId, contentId: $contentId}) {
item { id }
}
}
`, { projectId: project.id, contentId: issue.data.node_id });

const itemId = addResult.addProjectV2ItemById.item.id;

await github.graphql(`
mutation($projectId: ID!, $itemId: ID!, $fieldId: ID!, $value: String!) {
updateProjectV2ItemFieldValue(input: {
projectId: $projectId
itemId: $itemId
fieldId: $fieldId
value: {singleSelectOptionId: $value}
}) {
projectV2Item { id }
}
}
`, {
projectId: project.id,
itemId: itemId,
fieldId: statusField.id,
value: targetOption.id
});

console.log(`Issue #${issueNumber} → "${targetOption.name}"`);
successCount++;
} catch (error) {
console.log(`Error on issue #${issueNumber}: ${error.message}`);
errorCount++;
}
}

console.log(`Done: ${successCount} updated, ${errorCount} failed`);
2 changes: 1 addition & 1 deletion .node-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
18.19.1
20.18.0
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
7 changes: 3 additions & 4 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM node:18.19.1-alpine AS package
FROM node:20.18.0-alpine AS package

ARG NEXT_PUBLIC_UMAMI_SITE_ID
ARG NEXT_PUBLIC_RECAPTCHA_SITEKEY
Expand Down Expand Up @@ -37,8 +37,7 @@ COPY config.websocket.$ENVIRONMENT.yaml ./config.websocket.yaml
COPY config.seed.example.yaml ./config.seed.yaml
COPY migrate-mongo-config-example.ts ./migrate-mongo-config.ts
COPY ./migrations ./migrations
COPY ./.eslintignore ./
COPY ./.eslintrc.yml ./
COPY ./eslint.config.mjs ./
COPY server/jest.config.json ./jest.config.json
COPY ./next.config.js ./
COPY ./tsconfig.json ./
Expand All @@ -62,7 +61,7 @@ RUN NEXT_PUBLIC_UMAMI_SITE_ID=$NEXT_PUBLIC_UMAMI_SITE_ID \
NEXT_PUBLIC_ENABLE_BANNER_DONATION=$NEXT_PUBLIC_ENABLE_BANNER_DONATION \
yarn build

FROM node:18.19.1-alpine
FROM node:20.18.0-alpine

LABEL maintainer="Giovanni Rossini <giovannijrrossini@gmail.com>"

Expand Down
44 changes: 44 additions & 0 deletions cypress/e2e/tests/auth/login.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import user from "../../../fixtures/user";
import locators from "../../../support/locators";

describe("Login tests", () => {
const submitLoginForm = (email, password) => {
cy.get(locators.login.USER).type(email);
cy.get(locators.login.PASSWORD).type(password);
cy.get(locators.login.BTN_LOGIN).click();
};

it("Should login with valid credentials", () => {
cy.login();
});

it("Should not login with invalid password", () => {
cy.intercept("POST", "/api/.ory/self-service/login**").as(
"loginRequest"
);
cy.goToLoginPage();
submitLoginForm(user.email, "invalidPassword123");
cy.wait("@loginRequest").its("response.statusCode").should("eq", 400);
cy.contains("Erro ao fazer login").should("be.visible");
});

it("Should not login with invalid email", () => {
cy.intercept("POST", "/api/.ory/self-service/login**").as(
"loginRequest"
);
cy.goToLoginPage();
submitLoginForm("invalidEmail@alethieiafact.org", user.password);
cy.wait("@loginRequest").its("response.statusCode").should("eq", 400);
cy.contains("Erro ao fazer login").should("be.visible");
});

it("Should logout successfully", () => {
cy.login();
cy.intercept("/api/.ory/sessions/whoami").as("confirmLogout");
cy.get(locators.menu.USER_ICON).click();
cy.get(locators.menu.LOGOUT_MENU).click();
cy.wait("@confirmLogout", { timeout: 30000 });
cy.get(locators.menu.USER_ICON).click();
cy.get(locators.menu.LOGIN_MENU).should("be.visible");
});
});
Loading
Loading