* refactor: use ES module.
To maintain compatibility with vite 6 and since that's where the web are heading too.
Also moved some deps to devDeps, better optimized production builds. Changed some of the script command to match how others run or preview it, I think it was still using CRA.
* chore: update-lock.yaml
* refactor: since we are using ESM now, .cjs .ts required.
Changed the file extensions and refactored the .eslintrc.cjs I think there was a lot of bloat from the previous version and removed most of them and keep it simple for now, we can always expand from here a clean slate.
* refactor: added .node.json and refactored.
* fix(build): APIClient.ts had few error.
ESLint: Unexpected lexical declaration in case block.(no-case-declarations)
and TS2554: Expected 0-1 arguments, but got 2
we passed the cause to the constructor which it only takes 1 argument so removed it instead, since it's already in the string "Offline".
* fix(build): import never used.
* fix(build): add the types for react-dom/client.
* fix(build): use ESNext instead.
* fix(build): hmm why are we missing the types for the import?
Added @types/react-table.
* chore(lint): fix lint warnings
Don't use * for export.
* chore(lint): missing deps.
React Hook useEffect has a missing dependency: 'validateForm'. Either include it or remove the dependency array
* chore(lint): fix import.
* chore(lint): fix import.
* chore(lint): fix react hook.
error React Hook "useMutation" is called conditionally. React Hooks must be called in the exact same order in every component render react-hooks/rules-of-hooks
* chore(lint): value never used.
52:10 error '_regexPattern' is assigned a value but never used
* chore(lint): add missing dependency to useEffect
* chore(lint): fix imports.
* chore(lint): add deps to array.
* chore(lint): error Unexpected lexical declaration in case block no-case-declarations
* chore(lint): remove any and add types.
I am not sure about type CompleteFilterType I know it's being used for JSON so might need to use any?? dunno just test it and see if works.
* chore(lint): react-hooks/exhaustive-deps
* chore(lint): react-hooks/exhaustive-deps
* chore(lint): use type guard instead of any.
* chore(lint): react-hooks/exhaustive-deps
* Revert "chore(lint): remove any and add types."
This reverts commit 7b9168fe7826d63cb00e44df8e15fbde49b59174.
* chore(web): ignore sourcemap warnings
* chore(web): update vite to 5.0.4
* chore: add the new script `pnpm dev` to start the dev env.
* chore: add the curly braces.
more info: https://eslint.org/docs/latest/rules/no-case-declarations
* chore: remove the extra spaces
* chore: remove the extra spaces
* chore: add the curly braces.
* chore: add curly braces
* remove text-shadow property and comment
* revert switch case braces for Actions.tsx
---------
Co-authored-by: martylukyy <35452459+martylukyy@users.noreply.github.com>
* Various WebUI changes and fixes.
* feat(tooltip): make tooltip display upwards
* fix(tooltip): place tooltip to the right
* fix(web): add missing ml-px to SwitchGroup header
current: https://i.imgur.com/2WXstPV.png
new: https://i.imgur.com/QGQ49mP.png
* fix(web): collapse sections
* fix(web): improve freeleech section
* fix(web): rename action to action_components
Renamed the 'action' folder to 'action_components' to resolve import issues due to case sensitivity.
* fix(web): align CollapsibleSection
Old Advanced tab: https://i.imgur.com/MXaJ5eJ.png
New Advanced tab: https://i.imgur.com/4nPJJRw.png
Music tab for comparison: https://i.imgur.com/I59X7ot.png
* fix(web): remove invalid CSS class
* revert: vertical padding on switchgroup
added py-0 on the freeleech part instead
* feat(settings): add back log files
* fix(settings): irc channels and font sizes
* fix(components): radio select roundness
* fix(styling): various minor changes
* fix(filters): remove jitter fields
---------
Co-authored-by: ze0s <43699394+zze0s@users.noreply.github.com>
Co-authored-by: soup <soup@r4tio.dev>
Co-authored-by: ze0s <ze0s@riseup.net>
* enhancement: improve font loading performance and avoid page reflow
chore: get rid of postcss-import (we're not using it and it's not needed for tailwind)
* fix indent
added missing Buffer definition for Stacktracey, made date functions more robust against undefined values
enhancement: made simplifyDate and IsEmptyDate prone against undefined values
fix: added a global Buffer definition (apparently required by Stacktracey)
* add fonts files to workbox
* remove logo.png and touches manifest assets
* install vite-plugin-svgr to import svg as react components
* move logo.svg from public to src
* replace logo.png to logo.svg
---------
Co-authored-by: ze0s <43699394+zze0s@users.noreply.github.com>
* feat(web): use pnpm packageManager on package.json
* build(web): add frozen-lockfile to Makefile
* build(docker): use the same node version as Docker image
* build(docker): enable corepack
* build(makefile): use --dir instead of cd for pnpm
* flip to npm
* try pnpm
* nothing good started with p anyway
* I want to go outside.
* Split out deps and build
* 30 seconds on the fetch, reintroduce the p
* lock it in
* flip lock file to pnpm
* nuke yarn.lock
* kirby no longer has yarn
* flip goreleaser to v4, was using node12.
* snapshots don't have tags
* Update README.md
* pin offline dockerfile
* Delete .yarnrc.yml
* Delete web/.yarn directory
* fix: update scripts
---------
Co-authored-by: ze0s <ze0s@riseup.net>
* removed react-app type instead use vite.
* removed index.html from public since vite uses it from root: read more: https://vitejs.dev/guide/#index-html-and-project-root
* yarn.lock update.
* added vite config file. With commented rollUp option if we want the build to be called build but using default stuff for now.
* updated tsconfig to use vite and include vite.config.ts
* changed package json build commands to use vite.
* for some reason there is an error in vite config when we put project as tsconfig.json.
* build.go updated to use the new dist folder.
* refactored as well updated to use dist and web.AssetHandler again.
* Fixed issue forcing the frontend to be reloaded for all routes to work if logged in fresh without reloading it will always go back to dashboard.
* updated it to use the new function; need to fix the Index for baseUrl I believe, if enabled it works except logs route will crash due to cors.
* refactored and default port to 7474, don't think we need the rollUpOptions.
* added tmp/ to ignore .
* init air.toml, for dev hot reloading both app and backend. https://github.com/cosmtrek/air run it using air but make sure it's in PATH
* updated the start command to build and watch for changes, works great with air.
* revert
* added proxy for vite config. To be used for dev.
* fix: This fixes#117 Propagation bug.
* refactor: I think this should fix it, when logs route etc getting accessed usually it throws error but by getting rid of the catch-all it should work as intended, since web.RegisterHandler(r) will catch the unmatched ones.
* Moved outside static, keep it in public root folder.
* refactor to support the changes
* Added support for PWA, autoinject which auto updates when there is new "version" instead of prompting user.
* fix colour and added the assets.
* chore: yarn lock and remove logos.
* chore: remove logos, don't think we need em.
* chore:added dist folder.
---------
Co-authored-by: ze0s <43699394+zze0s@users.noreply.github.com>
* refactor: move to tanstack/react-query and fix cache
* refactor(releases): move to tanstack/react-query
* refactor(logs): move to tanstack/react-query
* refactor(base): move to tanstack/react-query
* refactor(base): move to tanstack/react-query
* refactor(dashboard): move to tanstack/react-query
* refactor(auth): move to tanstack/react-query
* refactor(filters): move to tanstack/react-query
* refactor(settings): move to tanstack/react-query
* chore(pkg): add tanstack/react-query
* refactor(filters): move to tanstack/react-query
* refactor: move to tanstack/react-query
* refactor: invalidate queries
* chore(pkg): remove old react-query
* chore: change imports to root prefixes
* build: remove needs web from test
* set enableReinitialize to true to fix formik caching issues
* fix all property for apiKeys const
* fix toast when enabling/disabling feed
---------
Co-authored-by: martylukyy <35452459+martylukyy@users.noreply.github.com>
* removed react-app type instead use vite.
* removed index.html from public since vite uses it from root: read more: https://vitejs.dev/guide/#index-html-and-project-root
* yarn.lock update.
* added vite config file. With commented rollUp option if we want the build to be called build but using default stuff for now.
* updated tsconfig to use vite and include vite.config.ts
* changed package json build commands to use vite.
* for some reason there is an error in vite config when we put project as tsconfig.json.
* build.go updated to use the new dist folder.
* refactored as well updated to use dist and web.AssetHandler again.
* Fixed issue forcing the frontend to be reloaded for all routes to work if logged in fresh without reloading it will always go back to dashboard.
* updated it to use the new function; need to fix the Index for baseUrl I believe, if enabled it works except logs route will crash due to cors.
* refactored and default port to 7474, don't think we need the rollUpOptions.
* added tmp/ to ignore .
* init air.toml, for dev hot reloading both app and backend. https://github.com/cosmtrek/air run it using air but make sure it's in PATH
* updated the start command to build and watch for changes, works great with air.
* revert
* added proxy for vite config. To be used for dev.
* fix: This fixes#117 Propagation bug.
* chore: update yarn lock
---------
Co-authored-by: KaiserBh <kaiserbh@proton.me>
Co-authored-by: ze0s <ze0s@riseup.net>
* removed react-app type instead use vite.
* removed index.html from public since vite uses it from root: read more: https://vitejs.dev/guide/#index-html-and-project-root
* yarn.lock update.
* added vite config file. With commented rollUp option if we want the build to be called build but using default stuff for now.
* updated tsconfig to use vite and include vite.config.ts
* changed package json build commands to use vite.
* for some reason there is an error in vite config when we put project as tsconfig.json.
* build.go updated to use the new dist folder.
* refactored as well updated to use dist and web.AssetHandler again.
* Fixed issue forcing the frontend to be reloaded for all routes to work if logged in fresh without reloading it will always go back to dashboard.
* updated it to use the new function; need to fix the Index for baseUrl I believe, if enabled it works except logs route will crash due to cors.
* refactored and default port to 7474, don't think we need the rollUpOptions.
* added tmp/ to ignore .
* init air.toml, for dev hot reloading both app and backend. https://github.com/cosmtrek/air run it using air but make sure it's in PATH
* updated the start command to build and watch for changes, works great with air.
* revert
* added proxy for vite config. To be used for dev.
* refactor: I think this should fix it, when logs route etc getting accessed usually it throws error but by getting rid of the catch-all it should work as intended, since web.RegisterHandler(r) will catch the unmatched ones.
* fix: baseurl and build
* fix(build): docker ignore !web/dist
* fix(build): dockerignore add exclusions
* docs: update README.md
* build: update postcss config
---------
Co-authored-by: KaiserBh <kaiserbh@proton.me>
Co-authored-by: ze0s <ze0s@riseup.net>
* Fixed button border in settings/download-clients
Button border for "Add new" is now uniform with other "Add new"-buttons
* enhancement(docs) add helper tooltips
- Add helper tooltips for inputs and link them to docs #161
* fix build error
* tooltips: changed positition
* hide tooltip below 640 width
* made tooltips better
now attaching to TextField names
* Added icon variation for MultiSelect and CheckboxField
* cleaned up old code
* refactor
Co-authored-by: ze0s <zze0s@users.noreply.github.com>
* added tooltips for DownloadClientForms
* added tooltips for indexerforms
* div for passwordfieldwide
* tooltips for details.tsx
* added tooltips to actions.tsx
* added tooltips to indexerforms.tsx
* replaced info icon with a more rudimentary one
* linting, removed duplicate tailwind display properties
* remove margin for flex centering
* fixed tooltip alignment on all fields
* add tooltip to PwFieldWide in indexer edit window
* refactor: simplify tooltips
* refactor: scope tooltip css
* refactor: tooltip default clickable
---------
Co-authored-by: martylukyy <35452459+martylukyy@users.noreply.github.com>
Co-authored-by: ze0s <43699394+zze0s@users.noreply.github.com>
* - fix: changed all {text,bg}-{teal,indigo}-* color properties to {text,bg}-{blue}-* so there is only one dominant primary color in the UI -- blue
- enhancement: added `cursor: pointer` to the PageButton component (used in pagination)
- enhancement: modified TitleCell to use the new Tooltip component and modified the width selectors to a more sane default value, now instead of scrolling one just has to tap the cell to see it's untruncated value
- enhancement: modified the Tooltip component to use react-popper-tooltip (which in turn uses popper.js) which is a much better alternative, since it uses auto-positioning in case there's not enough space and some things aren't as broken as in the previous version (e.g. there was a problem with forcing the previous tooltip to use a specific width)
- enhancement: added a useMedia hook selector from the react-use repository, which might come in handy in the future for better/easier decoupling of Desktop and Mobile UI/UX patterns via JS (versus CSS-only)
- enhancement: made the mobile navbar more visible and clear. also fixed previous path === "/" bug which was fixed on desktop.
- fix: fixed table headers/footers so they're rounded
- enhancement: made pagination components more compact (buttons and show N result selector)
* changed {ring, border}-indigo-* to ring-blue-*
* build: add yarn.lock
* fix: formatting warnings
* fix: formatting warnings
* fix: more formatting warnings
* fix: more formatting
* feat(irc): add irc status examples
* feat(irc): add dropdown menu to list
* feat(irc): update heroicons and add expand button
* feat(irc): update heroicons and add expand button
* Update Docker workflow
add buildx and qemu to support mulitarch builds
configure arm, arm64 and amd64 builds
* Change yarn timeout
fixes issue with yarn install timing out
* chore: update gitignore
* chore: add gitignore for web dir
* chore(web): upgrade to yarn2
* build: update actions and push docker hub
* build: add yarnrc and network-timeout
* build: unifi workflow
* build: depend on web to build first
* build: store artifacts between jobs
* build: store artifacts between jobs
* build: store artifacts between jobs
* build: store artifacts between jobs
* build: adjust dockerignore
* build: conditional extract metadata
* build: conditional extract metadata
* build: always push docker hub
* build: skip docker hub for now
* build: fix metadata
* fix: remove react-cookie since we can't delete the user_session cookie using JS (due to httponly being set)
* chore: update dependencies and set a global react dependency override (react-ridge-state creates a problem, this fixes it)
* chore: tidy up APIClient, login and logout pages
* fix: catch canOnboard() error in login.tsx
enhancement: add toast notify on intentional logout and nicely reset the context state; make sure screen-blinking is down to a minimum by having min-h-screen present.
* fix: let onboarding redirect to / instead of /login (/login isn't used anymore)
* fix: use normal <input /> caret cursor for SearchColumnFilter, instead of pointer
* chore(web): remove react-cookie package
* Started refactoring codebase for React 18.
* Migrated to react-router v6 fully
* Removed useless test setup along with relevant packages.
* Removed leftover console.log statement
* feat: use status forbidden for onboarding
* refactor(web): use react hook form on login
* fix: comply with r18 shenanigans
* chore: update packages
feat: add log searching
feat: wrap parent container to add a scrollbar on overflow so it doesn't push the page lower with each message
feat: switch to showing time instead of date+time
* fix(tsconfig.json): changed skipLibCheck to false.
refactor(eslint): moved configuration from package.json to .eslintrc.js and added a typescript plugin for future use
* feat: wip eslint and types
* feat: fix identation
* feat: get rid of last any types
* web: Added error handling. Fixed table overflow issues. Improved release status titles. Fixed a few bugs where certain forms/modals didn't close properly.
feat(web): Added react-error-boundary and stacktracey for handling errors. In case of a recoverable/non-state updating error, a notification is thrown, otherwise the user is shown an error page with the appropriate stack trace and error type and cause with the possibility of resolving the error by reseting the page's state.
enhancement(web/data-table/cells): Improved cell display behavior in tables -- it's now scrollable on mobile. Improved release status string readability.
enhancement(web/settings/Irc): Made IRC refetch interval every 3 seconds for those who are not patient.
fix(web/modals/DeleteModal): Fixed modal bug where it didn't close on button click.
fix(web/forms/IndexerForms): Fixed bug where the form didn't close on button click.
enhancement(web/ReleaseTable): Made the table more compact by utilizing 3em padding between cells instead of 6.
enhancement(web/ActivityTable): Ditto as above.
enhancement(web): Changed width of every page section from max-w-7xl (1280px to where applicable)
chore(web/dashboard/ActivityTable): Reformatted the file to a saner syntax.
enhancement(web/dashboard/StatsItem): Enlarged font size, set font to extrabold instead of bold and made padding consistent.
fix(web/navbar): Fixed bold font not showing properly on Firefox due to an argument ordering issue.
* chore: update pkg and fix broken proxy
feat: Added Inter Variable as the default font
feat: Added a pattern to the page background.
fix(react-multi-select-component): Made the multiselect components theme-agnostic, so it works properly with the light theme now.
fix(react-select): Made the components fix the default 30px height of the rest of the input components.
fix(useToggle): Fixed a bug where the toggle didn't work due to useCallback memoizing a callback with the old value.
refactor(Base):
- Added small theme-primary gradient to the beginning of the header.
- Made the splitter border theme-agnostic.
- Increased logo size a bit.
- Moved the links a bit closer to the logo.
- Updated the default link style to look more stylish.
- Added a link to the autobrr Docs section (currently defaults to the Indexers sections, but this should lead to an "Overview" page for configuring autobrr)
- Adapted the user dropdown to match the other header links' stylesheets and removed the annoying ring focus.
- Adapted the header for theme-agnostic mobile usage.
- Removed the negative padding/margin hacks.
refactor(StatsItem): Increased shadow size/strength and made the description text a bit lighter on the dark theme.
refactor(Dashboard): Increased the heading text sizes.
refactor(Logs, Releases, Settings, Login, filters/details, filters/list): Adapted to match the previous changes and improved theme compatibility with regards to text.
refactor(RegexPlayground): Fixed match highlight for JS regex.
refactor: refactored APIClient.ts with a new fetch wrapper and changed it into an explicit-import.
chore: modified package.json not to start browser on "npm run start"
chore: cleaned up code, deleted 2mo+ useless old comments.
fix: fixed parameter collision in screens/filters/details.tsx
fix: override react-select's Select component style to make it consistent. addresses #116
Co-authored-by: anonymous <anonymous>
* refactor: modified existing react imports to conform with the recommended approach of not using the default export directly, since it will be deprecated in one of the future releases. see https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html for more info. note: react types don't require importing of react.
refactor: cleaned up some of the imports
* feat: added eslint and fixed all the errors/warning. eslint can now be invoked by running "npm run lint".
chore: updated .gitignore not to include unnecessary artefacts.
refactor: re-organized some of the imports.
* refactor: converted remaining few typed functional components to proper prop argument structure.
* fix: fixed small react-query invalidation bug for the FilterDetails component.
Co-authored-by: anonymous <anonymous>
* Removed recoil and replaced it with react-ridge-state, a 0.4kb alternative.
* Added AuthContext and SettingsContext persistent localStorage states.
* Fixed tailwind.config.js incorrect key directive. See https://tailwindcss.com/docs/content-configuration#safelisting-classes.
* Changed darkMode in Tailwind to "class" and started manually adjusting the theme according to the appropriate media query.
* Added possibility of changing the theme manually via the Settings tab.
* Changed Releases.tsx behavior to show the UI only when the HTTP request succeeded and there is some data (i.e. table is non-empty).
* Changed the table color of screens/filters/list.tsx to a one notch lighter shade of gray for eye-comfort.
* Replaced "User" in the header, with the users real username.
* Made data version, commit and date fields optional in settings/Application.tsx.
* Started working on a RegExp playground, which works fine, but JS won't cooperate and return the right match length. Either way, the RegExp must be implemented on backend and then must be communicated with the frontend. Otherwise a potential for incorrect results exists.
* Removed Layout.tsx, since it was redundant.
* Created a Checkbox component class for easier and consistent future use.
* Rewritten App.tsx, Login.tsx, Logout.tsx to accomodate for new changes.
* Fixed previous mistake regarding tailwind.config.js purge key, since we're still using old postcss7 from October last year
* Removed package-lock.json from both root and web directories.
* Refresh TypeScript configuration to support a types/ directory containing d.ts. The effect of this is that types don't have to be imported anymore and are at all times available globally. This also unifies them into a single source of truth, which will be a lot easier to manage in the future. Note: Only certain interop types have been moved at the time of writing.
* Fixed minor Checkbox argument mistake.
* fix: remove length from data check
* chore: lock files are annoying
* fix: select
* fix: wip release filtering
* chore: add packages
* chore: disable tailwind jit
* refactor: update base layout structure
* refactor: filter to single form with formik
* feat: save filter actions on save
* feat: disable form dirty