* feat: improved warning modals
* fix: qa
* feat: install to play and update to play changes
* fix: dont warn for server projects as already reviewed
* fix: lint
* wip
* ui edits
* better logic for syncing tech review state in a single centralized place
* never automatically finish a tech review report
* fix css
* fix clippy
* prepr
* global detail verdicts system
* global traces frontend
* split global routes into own mod
* tweak migration to only do no-key check at app level
* prepr
* Backend routes for choosing username in OAuth flow
* fix up oauth flow routes
* improve URL-related OAuth code
* Use user-provided callback addr instead of SELF_ADDR
* Revert "Use user-provided callback addr instead of SELF_ADDR"
This reverts commit 7ea0635d86.
* fix flow
* fix: backend response for create oauth account
* feat: new auth flow (#5840)
* update auth with new designs
* refactor: auth.js to auth.ts
* refactor: componentize auth pages
* fix: auth pages height
* feat: initial implementation of new sign-in oauth
* fix create account flow
* fix checkbox
* remove hard coded username
* implement create user validation endpoint and add more specific error responses
* feat: implement under 13 DOB guard and email/password validation route
* fix: TOCTOU issue
* refactor: pnpm prepr
* fix: make sure staging uses staging
* fix: hcaptcha styles
* fix: copy
* remove: auth/welcome page as its no longer used
* refactor: bring root page card styles into individual components and use tailwind
* fix: account settings modals to use new modal and fix lots of bad styles
* refactor: pnpm prepr
* feat: implement last signed in indicator
* fix: append number when generated name from email is taken
* refactor: pnpm prepr
* fix: last sign in badge color
* fix: qa issues
* refactor: pnpm prepr
* fix: hover effect on native date picker
* chore: temp staging undo
* Revert "chore: temp staging undo"
This reverts commit cad6bd4f92.
* feat: handle app create account
* fix: last signed in style
* fix: add initOnMounted for SSR race
* refactor: use typescript
* refactor: pnpm prepr
* refactor: use typescript for reset-password
* refactor: convert verify-email to use typescript
* refactor: convert authorize.vue to use typescript
* fix: authorize.vue error states
* feat: small style updates
* feat: implement date picker component
* feat: improve UX and styles for range select
* refactor: pnpm prepr
* fix: range select border styles
* feat: implement date picker component in create account
* feat: implement preserve date for date picker
* update rust toolchain
* increase recursion limit
* fix: date picker can be null
* fix: calculate age based on user's timezone
* fix: number input icons color
* fix: date picker icons
* feat: improve styles
* fix: add width on date
* fix: hover color bad on number input
* fix lints
* feat: add default date open view
* fmt
* fix: account.vue
* fix: remove default date to open 13 years ago
* fix: edit copy on info banner
* fix: cannot hover over project card tooltip items (#6071)
fix: cannot hover over project cards
* feat: improve add dependency flow (#6075)
* fix: shadow on nav
* feat: improve add dependency flow
* feat: update suggested dependency style
* feat: update dependency rows to use version number and update styles
* feat: implement combobox select searched text on focus
* feat: add Tabs.vue
* feat: update nav tabs to use tabs
* feat: improve project search dropdown
* fix: dependency search not clearing inbound query
* fix: combobox no options open state bug
* feat: improve dependency project and version search
* fix: open modrinth project links in the app (#6072)
* pin tanstack versions + set pnpm min age to 7 days
* squash commits
* fix: 2 factor auth enter code screen styles
* update copy
* update copy
* improve reset password
* feat: update sign in screen
* fix: unused import
* Merge branch 'main' into boris/dev-908-backend-changes
* Revert "Merge branch 'main' into boris/dev-908-backend-changes"
This reverts commit b9b03796e3.
* fix: add stroke
* feat: add passkey support (#6375)
* feat: add passkey backend
* feat: passkey frontend
* invalidate sessions on compromised passkey
* chore: run sqlx prepare
* fix: make passkey button use both collumns to prevent empty space
* fix: correctly verify max passkeys in finish route
* fix: use structs for response
* fix: add rp name default
* style: use web::Json
* fmt
* feat: improve manage passkeys UI
* fix copy
* pnpm prepr
---------
Co-authored-by: tdgao <mr.trumgao@gmail.com>
Co-authored-by: Truman Gao <106889354+tdgao@users.noreply.github.com>
Co-authored-by: Michael H. <michael@iptables.sh>
Co-authored-by: Calum H. (IMB11) <contact@cal.engineer>
Co-authored-by: Calum H. <calum@modrinth.com>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
Co-authored-by: DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com>
* Begin external projects moderator database frontend
* add copy link button
* begin project page permissions settings
* MEL database backend routes
* include filename in external files
* wip: when uploading a version file, fetch its overrides as a list
* wip: override license checks
* improve FileHost ref counting
* file host read capability
* scan files when inserting version file
* add dependency sha1 field
* clean up version files
* wip: attributions
* update s3 file host
* attribution scanning basic works
* works
* insert attribution info after resolving
* add routes
* remove dep sha1 stuff
* prepr
* wip: override file sources
* add files_missing_attributions to versions
* return extended version info + attributed at/by
* hook up frontend to backend (mostly)
* expose version date published
* withholding version visibility
* frontend work
* prepr
* use api-client for img upload
* moar frontend
* prepr
* Add schema to attribution resolution and Flame project results
* sqlx prepare
* changes
* remove feature flag, fix optional proof images
* fix schema
* fmt
* fix deletion and file fetch
* prepare
* fix admonition
* update frontend stuff to new schema
* prepr
* attribution on dependencies
* fixes
* sqlx prepare
* fixes
* routes
* fix routes
* Version grandfathering
* prepare
* wip: bulk routes
* pushing what i've got rn
* include link in NoPermission
* change hash insert to bulk route
* query flame even if entry in MEL
* delete file with weird name
* Prioritise putting override files in existing groups even with ExternalLicense
* fix how hex bytes are handled in route
* feat: coolbot moderation changes (#6215)
* Update moderator checklist
* move permissions stage order
* Updated nagContext.versions to v3, added nag for permissions
* Update permissions.vue default messages
* prepr
---------
Co-authored-by: coolbot100s <76798835+coolbot100s@users.noreply.github.com>
* QA
* prepr
* should group by project
* return attribution resolution correctly
* updated by moderator info
* Track what moderator reviewed an attribution moderation status
* default deser FMA field
* new version page
* clean up fetching + add a couple missing features
* qa items
* prepr
* provide moderation package stuff with DI
* format?
* don't redact moderated_at
* move supplementary resources
* Reorganize moderation messages.
* Quick replies for external content permissions.
* prepare
* QA
* allow exempting projects
* Ignore Flame projects which 404
* fix ci
* fix cross project attribution stuff
* Fix permission error
* change what files get cscanned
* add more logging
* QA Jun 22
* fix
* idempotency
* Expose route for rescanning
* update blog link
---------
Co-authored-by: aecsocket <aecsocket@tutanota.com>
Co-authored-by: coolbot100s <76798835+coolbot100s@users.noreply.github.com>
Co-authored-by: aecsocket <43144841+aecsocket@users.noreply.github.com>
* feat: implement dependent project breakdown
* implement dependent project type filter
* feat: show dependent on column if there are multiple projects selected
* feat: different tooltip for when both project version and dependent breakdowns are on
* feat: implement dependents query filter
* feat: add project icon to query filter
* fix: dont show dependent on column when project breakdown is selected
* feat: add org icon
* remove: dependent on project column and project version project column
* refactor: pnpm prepr
* fix: all project selection gets unselected when reload page
* pnpm prepr
* fix: still using old search formatter
* feat: implement projects in table click to link to project page
* feat: handle analytics values that dont have a dependent project as a "No dependent" row
* pnpm prepr
* feat: remove org icon for dependents projects and change unknown label
* feat: do not include unknown rows for showing top 8
* feat: separate out no dependents based on download reason
* fix: use compatible dependencies for query filter options
* feat: implement members breakdown/filter frontend (#6470)
* feat: add link to user in table
* fix: do not allow breakdowns to occur without shared stats
* pnpm prepr
* fix: i18n and passing params for formatter
* fix: clicking users in table in app takes you to blank page instead of website
* fix: wrong loader icon on server panel
* fix: surface var misalignment
* fix: password managers still detecting username field as something to autofill
* feat: show users on backupitem components
* feat: seperators for filter sections
* fix: lint + change remove -> revoke
* fix: copy
* feat: align copy
* feat: implement cancel/apply for custom timeframe range picker
* feat: implement dot for showing todays date
* feat: add max date to be today and show todays date
* feat: if ratio mode, dont show total
* feat: implement show more batching excess lines into "Other" bucket
* refactor: pnpm prepr
* feat: add pick and plop for date range start/end dates
* feat: implement reset query button
* feat: clear button to clear breakdown
* feat: more aggressively trim allowed minimum group by option
* fix: dont show project status filter when from project settings/analytics
* fix: clear selected X above number when appropriate
* feat: graph style updates and dont show year in x axis unless more than 2 year timeframe
* fix: loading state to include legend in blur
* feat: add project icon to project select
* feat: filter out draft projects from analytics
* feat: implement multiselect sections headers, project select org sections, and project options icons
* feat: implement click and drag to select date range
* feat: implement windows history for query builder
* revert: no longer switch breakdown/filter option if same category
* feat: implement showing project for project version breakdown/filter when there are multiple projects
* feat: implement modrinth sided events
* fix: border radius
* feat: implement analytics range highlight
* fix: loading state showing empty state text
* refactor: pnpm prepr
* feat: improve dropdown filter bar and multiselect performance
* fix: multiselect keyboard use
* fix: graph overflow issues
* fix: loading state text on table
* feat: implement tooltip scroll
* fix: adjust charts event tooltip
* feat: shorten time to not repeat am/pm
* feat: implement query params for graph component settings
* fix: qa
* feat: add reset timeframe button
* fix: legend colors moving between metric by determining color based on only downloads metric index
* feat: implement auto switching temporarily to group by day for renvenue metric and disable revenue metric for time range < 2 days
* fix: change to > 1 day
* fix: custom timeframe picker
* feat: implement big performance improvement for table
* feat: implement hover on legend to highlight graph
* fix: defer commit in query builder/filter and style fixes
* feat: more performance optimization to analytics dashboard state, chart, and table
* feat: add tooltip for other item
* feat: improve custom time frame range select
* feat: implement analytics events admin page
* fix: switch column order
* pnpm prepr
* feat: implement mock analytics events
* feat: improve analytics events admin page
* feat: focus title input on analytics create event modal
* fix: remove labels annoying
* feat: hook up analytics events backend
* fix: type error
* feat: reduce combobox padding
* feat: reduce padding on multiselect
* feat: add overlay scrollbar for combobox
* feat: a bunch of style fixes to combobox, multiselect and dropdown filter bar
* feat: MORE PADDING fixes
* feat: use user_agent for download source
* Revert "feat: use user_agent for download source"
This reverts commit d6dc8a99f1.
* fix: query filter project version lag and borked virtualization
* feat: rename breakdown "none" to "project"
* feat: implement right side checkmark for multiselect
* feat: keep crossed out legend items still shown in tooltip but also crossed out
* fix: focus styles
* fix: focus styles pt2
* feat: implement filter by top 8
* fix: preview is incorrect when selecting same date in range date picker
* feat (playtest): cross out legend items in tooltip and allow hide/show in tooltip
* feat (playtest): table component controls what graph shows
* feat: change download source to use user_agent
* feat: fix click to cross out in legend
* feat: add hover legend item to highlight line in tooltip
* fix: export csv to always be dropdown
* feat: implement breakdown = none
* performance: frontend memory reduction
* performance: reduce memory usage from project versions query by keeping only whats necessary
* fix: table checked items not in graph if 0
* feat: add shift click to select a range in table
* performance: add caching for metric types so switching between them is snappy
* performance: batch analytics requests by 15 project ids, with 150 ms delay between, so backend is happy
* feat: add analytics table search
* refactor: pnpm prepr
* fix: query filter options not coming in from analytics fetch
* feat: remove breakdown = none when there are multiple projects
* feat: improve table sorting
* feat: sort projects in project dropdown
* fix: getting project name for project versions
* fix: add loading state for filter and parallel fetch
* performance: use precomputed map for project version options to remove first hover lag
* feat: dropdown filter always open on one side and improve styles
* fix: custom time range picker being weird
* refactor: pnpm prepr
* fix: add back in batch with 300ms interval for projects to prevent backend rate limiting
* performance: only do queries to populate graph first before other analytics queries
* fix: QA polish issues around style and copy
* feat: dont show select all when its just one item in section
* fix: bugs with ratio mode and hiding chart lines
* fix: adjust padding in combobox and multiselect and fix not unfocusing when deselect
* fix: small styles
* fix: polish admin analytic events
* fix: keep scroll position with selection action row appearing when selecting one
* feat: add subheading in graph for showing N items from table
* feat: add unmonetized explaination tooltip
* performance: implement limit on how many lines can be shown in graph
* feat: mobile pass
* refactor: pnpm prepr
* add clear button
* feat: add time in analytics event and normalize date/time so its correct to timezones
* fix: padding
* feat: implement show prev period toggle
* feat: extract TimeFramePicker to packages/ui
* fix: adjust style
* feat: keep table selected persisted in query parameter
* fix: style on prev item value in legend
* fix: when breakdown switches, reset selected series
* fix: tooltip styles
* feat: change project selection to reset to show top 8 only if reconciled down to 0 items
* feat: implement show top 8 button in graph subheading
* fix: rename download type to download reason
* fix: formatting label for table
* feat: persist table sort by and sort direction
* fix: show top 8 button in graph not defaulting to top 8 for other metrics
* feat: implement prev period analytics fetch into the same current period fetch by shifting start date
* refactor: pnpm prepr
* fix: remove number if its just top 1
* fix: brief select items empty state when switch breakdown
* feat: implement format table playtime column
* feat: update export csv filename
* feat: change playtime column to display in hours
* refactor: pnpm prepr
* fix: still download type in filter
* feat: update analytics tooltip
* fix: wrong all projects icon
* feat: force legend order and graph colour for monetization
* refactor: pnpm prepr
* fix: multiselect and combobox sizes
* fix: chart icon add hover delay
* feat: (to playtest) implement multiple breakdowns
* fix: couple UX things for multiple breakdown
* fix: cannot unpin on page click
* fix: multiple breakdown legend and tooltip labels
* feat: add right side checkmark for dropdown filtr bar
* feat: enabling prev period will cross out prev for current ones already crossed out
* feat-mobile: remove drag to select time frame in graph
* feat-mobile: dropdown filter to replace dropdown for submenus on small screen
* feat-mobile: time frame picker to use different start and end date pickers for mobile
* fix-mobile: fix multiselect scroll on mobile
* feat: consolidate is mobile ref into context
* fix-mobile: combobox and multiselect scroll bug when mobile search bar open, fix timeframe picker mobile pick date, and dropdown filter bar click outside to close
* fix-mobile: smaller metric card font
* fix: dropdown filter bar scroll while search
* feat: implement project side events
* feat: implement better mobile view design for query builder
* feat: handle events overflow
* small: add select none
* feat: remove clear project and breakdown
* fix: event icon hover color
* feat: default hide project events if there are multiple projects, and default show if only 1 project
* feat: implement analytics performance updates, including facets, and v3 user projects
* feat: grey out dimmed lined on legend item hover
* feat-mobile: style fixes
* add close on select prop
* feat: add close on select for time frame picker mobile
* feat: date picker default read only
* refactor: pnpm prepr
* feat: default to projects breakdown instead of no breakdown with multiple projects
* fix-mobile: improve graph touch interactions
* small: 2 sig figs on playtime
* feat: deduplicate version uploads that have same version number and are uploaded on same day
* fix: analytics events grouping causing overflow
* feat: improve performance on analytics events grouping
* fix: tooltip expanding page width briefly
* fix: prevent double tap to zoom on inputs
* feat: add click to show chart event for mobile
* fix: toggle not having touch manipulation
* fix: chart tooltip scroll in mobile
* fix: remove project breakdownoption as it is default breakdown when none are selected
* fix: dropdown filter bar briefly empty when switching pages in mobile
* feat: keep tooltip open after drag in mobile
* fix: using plural instead of single for project breakdown
* fix: date picker scrolling page after picking date in mobile by suppressing focus
* fix: callback to Organization instead of org id
* feat: improve chart tooltip date range label formatter to be much more consistent
* feat: tap to toggle event tooltip
* fix: add user select none on graph and fix zoom into download threshold input
* fix: frontend still filtering after backend already filters
* feat: fix emptys state height content shift
* fix: qa issues
* fix: a number of qa issues
- Hide project events based on visible project legend/table selection
- Filter project status events by end status and add explicit copy for approved, private, and unlisted
- Style Modrinth analytics events with blue icon, marker, guide, and range borders
- Add scroll fade shadows to analytics chart and event tooltips
- Show previous-period date range in the chart tooltip
- Make project breakdown conditional on multiple selected projects and allow no breakdown when none are selected
- Add breakdown selection actions and fix “Group by day” copy
* feat: implement graph controls dropdown
* fix date picker typing into time input
* fix: styles in events table
* small: style
* feat: implement using new backend facets route
* feat: implement user get all projects
* performance: deter non-critical fetches to after analytics is in
* fix: refreshing causes multiple projects to do breakdown=none
* performance: cache project version options to fix lag on open sub menu
* refactor: remove chart event height being controlled by parent
* feat: update controls dropdown to have fainter border
* fix: loading bar not fading away
* fix: cannot click in graph
* feat: dont conditionally show multiselect selection actions
* fix: z-index and padding issues
* fix: project events incorrectly toggling on for first page load
* feat: remove show more and show less in legend, always show all
* fix: playtime y axis labels
* feat: improve y axis formatting for playtime and others
* feat: use tabs for game version select, and remove prev period when change breakdown or project selection
* refactor: pnpm prepr
* feat: change hidden legend items to not contribute to ratio percentages
* feat: event icon consume scroll for tooltip panel
* feat: remove gap inside chart tooltip
* feat: add gap for date picker 2 calendar view
* feat: improve analytics events grouping logic for modrinth events to be close to target
* pnpm prepr
* fix: cant click in gap in toggle
* fix: bugs around selected series from table not persisting with timeframe or filter changes
* refactor: kabab case
* refactor: split up large analytics chart and table component files into smaller components and ts modules
* fix: legend is stale after resetting query
* refactor: split up giant analytics provider with utils
* i18n pass
* revert: format number composable change
* fix: playtime was choosing y axis ticks in seconds instead of hours
* refactor: rename folder that with components to match main component name
* refactor: same rename for analytics table for consistency
* refactor: name main components to index.vue and keep folder name as component name
* refactor: pnpm prepr
* refactor: rename types
* refactor: move query builder types into types file and move components into components/analytics-dashboard
* refactor: colocate query builder url with analytics-dashboard component
* refactor: pnpm prepr:frontend
* fix: download threshold not width fit
* fix: no option to see release/all game versions in selected filter dropdown
* fix: game version dropdown width
---------
Signed-off-by: Truman Gao <106889354+tdgao@users.noreply.github.com>
Co-authored-by: Calum H. (IMB11) <contact@cal.engineer>
* Begin external projects moderator database frontend
* add copy link button
* begin project page permissions settings
* MEL database backend routes
* include filename in external files
* Hook up frontend external license page to backend
* more work on user-facing external projects stuff
* put user-facing stuff behind feature flag
* prepr
* clippy
---------
Co-authored-by: aecsocket <aecsocket@tutanota.com>
* fix: queue store stability + persistence
* fix: lint
* feat: set to draft btn
* feat: migrate to indexed db rather than local storage for moderation checklist storage (keep session + perms alone)
* fix: storage cleanup + lint
* fix: invalidation fixes