Skip to content

Conversation

@jappyjan
Copy link
Collaborator

@jappyjan jappyjan commented Jul 7, 2025

Description by Korbit AI

What change is being made?

Rename all instances of the term "attraccess" to "fabaccess" across the codebase, documentation, and configuration files.

Why are these changes being made?

The changes are being made to update the project branding from "Attraccess" to "FabAccess" to reflect a new naming convention and improve the project's alignment with its core focus on assisting makerspaces and FabLabs. This change aims to unify the project name in both internal references and public documentation, enhancing consistency and clarity for users and developers.

Is this description stale? Ask me to generate a new description by commenting /korbit-generate-pr-description

@jappyjan jappyjan self-assigned this Jul 7, 2025
@jappyjan jappyjan linked an issue Jul 7, 2025 that may be closed by this pull request
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Debugging Log Exposes User Credentials

A debugging console.log statement, console.log('usernameOrEmail', usernameOrEmail);, was accidentally committed in the getUserByAuthenticationDetails method. This line should be removed from production as it logs user credential information.

apps/api/src/users-and-auth/auth/auth.service.ts#L149-L151

https://github.com/FabInfra/Attraccess/blob/5b83132f6bef6b55d3bc0e15f7281d2bc66888c5/apps/api/src/users-and-auth/auth/auth.service.ts#L149-L151

Fix in CursorFix in Web


Bug: Database File Migration Logic Fails

The fabaccessDbFile variable is incorrectly set to 'attraccess.sqlite', making it identical to attraccessDbFile. This breaks the intended database file migration logic, which should use 'fabaccess.sqlite' as the new default and fall back to 'attraccess.sqlite' if the old file exists.

apps/api/src/database/datasource.ts#L40-L54

https://github.com/FabInfra/Attraccess/blob/5b83132f6bef6b55d3bc0e15f7281d2bc66888c5/apps/api/src/database/datasource.ts#L40-L54

Fix in CursorFix in Web


BugBot free trial expires on July 22, 2025
You have used $0.00 of your $0.00 spend limit so far. Manage your spend limit in the Cursor dashboard.

Was this report helpful? Give feedback by reacting with 👍 or 👎

@github-actions
Copy link

github-actions bot commented Jul 7, 2025

🐳 Docker images built and pushed:

GitHub Container Registry: ghcr.io/fabinfra/attraccess:pr-201-6705bec
Docker Hub: fabaccess/attraccess:pr-201-6705bec

Image Digest: sha256:763e886de44033c791a3e1b9206b9f93d6fd07620e4b91c46bed50a39ac97744

@github-actions
Copy link

github-actions bot commented Jul 7, 2025

🐳 Docker images built and pushed:

GitHub Container Registry: ghcr.io/fabinfra/attraccess:pr-201-bf347f4
Docker Hub: fabaccess/attraccess:pr-201-bf347f4

Image Digest: sha256:86ae452765021c97684c17095745c7ed8e1f1d4ef5cd133a9a7b3bfd6b5eca5d

Copy link

@korbit-ai korbit-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review by Korbit AI

Korbit automatically attempts to detect when you fix issues in new commits.
Category Issue Status
Functionality Redundant Database File Paths ▹ view
Design Over-exposed External Module ▹ view
Design Inconsistent Component Directory Structure ▹ view
Readability Magic number in component ▹ view
Readability Unexplained Complex Regex Pattern ▹ view
Documentation Missing interface purpose documentation ▹ view
Files scanned

Due to the exceptionally large size of this PR, I've limited my review to the following files:

File Path Reviewed
apps/api/src/fabreader/events.ts
apps/api/src/app/app.service.ts
libs/plugins-frontend-ui/src/lib/components/index.ts
apps/api/src/users-and-auth/users/dtos/paginatedUsersResponse.dto.ts
apps/api/src/resources/dtos/paginatedResourceResponse.dto.ts
libs/plugins-backend-sdk/src/lib/auth.types.ts
apps/api/src/resources/usage/dtos/getActiveUsageSession.dto.ts
libs/plugins-frontend-sdk/src/lib/frontend.routing.ts
apps/api/src/resources/usage/dtos/GetResourceHistoryResponse.dto.ts
apps/api/src/resources/sse/sse.module.ts
apps/api/src/fabreader/dtos/update-reader-response.dto.ts
apps/api/src/resources/groups/errors/groupNotFound.error.ts
libs/plugins-backend-sdk/src/index.ts
apps/frontend/src/components/IntroductionStatusChip/index.tsx
apps/frontend/src/components/emptyState.tsx
libs/plugins-backend-sdk/src/lib/plugin.interface.ts
apps/frontend/src/app/unauthorized/use-sso-callback-url.ts
apps/api/src/analytics/analytics.module.ts
apps/frontend/index.html
apps/frontend/src/components/logo/index.tsx
apps/frontend/src/components/bootScreen/index.tsx
apps/api/src/users-and-auth/auth/auth.types.ts
apps/api/src/resources/introductions/resourceIntroductions.module.ts
apps/api/src/users-and-auth/auth/sso/oidc/exceptions/account-linking-required.exception.ts
apps/api/src/resources/introducers/resourceIntroducers.module.ts
apps/api/src/app/app.controller.ts
apps/api/src/email-template/email-template.module.ts
apps/api/src/resources/usage/events/resource-usage.events.ts
apps/frontend/src/components/pwaInstall/index.tsx
apps/api/src/analytics/analytics.service.ts
apps/api/src/users-and-auth/users/dtos/createUser.dto.ts
apps/frontend/src/app/resourceOverview/resourceGroupCard/statusChip/index.tsx
apps/frontend/src/hooks/useHasValidIntroduction.ts
apps/frontend/jest.config.ts
apps/api/src/analytics/analytics.controller.ts
apps/api/src/resources/iot/webhooks/webhooks.module.ts
apps/frontend/src/app/resources/IntroductionsManagement/history/index.tsx
apps/api/src/resources/introductions/isIntroducer.decorator.ts
apps/frontend/src/app/resource-groups/IntroductionsManagement/history/index.tsx
apps/api/src/resources/groups/introductions/isIntroducer.decorator.ts
apps/frontend/src/app/plugins/plugin.state.ts
apps/api/src/resources/iot/mqtt/mqtt-resource.module.ts
apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookSecurityInfo.tsx
apps/frontend/src/app/resources/iot-settings/mqtt/MqttConfigurationPanel.tsx
apps/frontend/src/api/index.ts
libs/plugins-frontend-sdk/src/lib/frontend.pluggable.ts
apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookCreateModal.tsx
apps/frontend/src/app/unauthorized/unauthorized-layout/layout.tsx
apps/api/src/resources/usage/resourceUsage.module.ts
apps/api/src/resources/iot/iot.service.ts
apps/frontend/src/app/resourceOverview/toolbar/filter/index.tsx
apps/frontend/src/app/resources/iot-settings/webhooks/hooks/useTemplatePreview.ts
apps/frontend/src/app/resources/usage/components/HistoryHeader/index.tsx
apps/api/src/users-and-auth/strategies/local.strategy.ts
apps/api/src/mqtt/mqtt.module.ts
apps/frontend/src/app/user-management/details/index.tsx
apps/frontend/src/app/fabreader/FabreaderSelect/FabreaderSelect.tsx
apps/api/src/fabreader/fabreader.module.ts
apps/frontend/src/app/fabreader/FabreaderFlashButton/FabreaderFlashButton.tsx
apps/api/src/email-template/email-template.service.ts
libs/react-query-client/vite.config.ts
apps/api/src/resources/introducers/resourceIntroducers.service.ts
apps/frontend/src/app/resourceOverview/toolbar/scanner/index.tsx
apps/api/src/resources/groups/resourceGroups.module.ts
apps/frontend/src/components/PWAUpdatePrompt/installationProgressIndicator/index.tsx
libs/plugins-frontend-ui/src/lib/components/FabAccessUser/index.tsx
apps/frontend/src/main.tsx
apps/api/src/resources/resources.module.ts
libs/database-entities/src/lib/entities/mqttServer.entity.ts
apps/frontend/src/components/deleteConfirmationModal/index.tsx
libs/plugins-frontend-ui/vite.config.ts
libs/plugins-frontend-sdk/vite.config.ts
apps/frontend/src/app/resources/usage/components/SessionTimer/index.tsx
apps/api/src/resources/groups/introducers/resourceGroups.introducers.service.ts
build.sh
apps/frontend/src/app/resource-groups/index.tsx
apps/frontend/src/app/mqtt/MqttServersPage.tsx
apps/api/src/fabreader/card.controller.ts
apps/api/src/resources/dtos/createResource.dto.ts
apps/frontend/src/app/sso/SSOProvidersPage.tsx
apps/api/src/fabreader/modules/websockets/websocket.types.ts
libs/plugins-backend-sdk/src/lib/auth-decorator.ts
apps/api/src/resources/groups/introductions/isIntroducerGuard.ts
apps/api/src/mqtt/servers/mqtt-server.service.ts
apps/frontend/src/components/IntroducerManagement/index.tsx
apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookList.tsx
apps/frontend/src/app/resources/usage/resourceUsageHistory.tsx
apps/api/src/resources/dtos/updateResource.dto.ts
apps/frontend/src/app/resources/usage/components/IntroductionRequiredDisplay/index.tsx
apps/frontend/src/app/resources/usage/components/HistoryTable/utils/tableRows.tsx
apps/api/src/resources/introductions/isIntroducerGuard.ts
apps/frontend/vite.config.ts
apps/frontend/src/app/resources/usage/components/SessionNotesModal/index.tsx
apps/api/src/users-and-auth/auth/auth.controller.ts
apps/frontend/src/app/resources/iot-settings/iotSettings.tsx
apps/api/src/database/datasource.ts
apps/frontend/src/app/unauthorized/ssoLogin.tsx
apps/frontend/src/app/email-templates/EmailTemplatesPage.tsx
apps/frontend/src/app/resources/iot-settings/webhooks/WebhookConfigurationPanel.tsx
libs/plugins-frontend-ui/src/lib/components/ResourceSelector/ResourceSelector.tsx
apps/api/src/resources/introducers/resourceIntroducers.controller.ts
apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookAdvancedSettings.tsx
apps/frontend/src/app/resources/usage/components/UsageNotesModal/index.tsx
apps/frontend/src/app/resources/details/qrcode/index.tsx
apps/api/src/email-template/email-template.controller.ts
apps/frontend/src/app/resourceOverview/index.tsx
apps/frontend/src/app/unauthorized/ssoLinkingRequiredModal/index.tsx
apps/api/src/users-and-auth/auth/sso/dto/update-sso-provider.dto.ts
apps/frontend/src/components/PasswordInput/PasswordInput.tsx
apps/api/src/resources/introductions/resourceIntroductions.controller.ts
apps/api/src/users-and-auth/auth/sso/dto/create-sso-provider.dto.ts
apps/api/src/plugin-system/plugin.controller.ts
apps/api/src/resources/groups/resourceGroups.service.ts
apps/frontend/src/app/unauthorized/loginForm.tsx
apps/api/src/plugin-system/plugin.manifest.ts
apps/api/src/fabreader/modules/websockets/reader-states/wait-for-resource-selection.state.ts
apps/api/src/users-and-auth/auth/sso/oidc/oidc.guard.ts
apps/frontend/src/app/unauthorized/password-reset/passwordResetForm.tsx
apps/frontend/src/app/resources/IntroducerManagement/index.tsx
apps/frontend/src/app/dependencies/index.tsx
apps/frontend/src/app/csv-export/csv-export.tsx
apps/frontend/src/app/resource-groups/IntroducerManagement/index.tsx
apps/api/src/users-and-auth/strategies/jwt.strategy.ts
apps/api/src/resources/groups/introducers/resourceGroups.introducers.controller.ts
apps/api/src/fabreader/fabreader.service.ts
apps/frontend/src/components/IntroductionsManagement/history/index.tsx
apps/api/src/resources/groups/introductions/resourceGroups.introductions.service.ts
apps/frontend/src/app/resources/usage/components/ResourceUsageSession/index.tsx
apps/api/src/users-and-auth/auth/sso/sso.service.ts
apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookBasicSettings.tsx
apps/frontend/src/app/plugins/UploadPluginModal.tsx
apps/api/src/resources/groups/introductions/resourceGroups.introductions.controller.ts
apps/frontend/src/app/layout/sidebarItems.tsx
apps/api/src/fabreader/modules/websockets/reader-states/reset-ntag424.state.ts
apps/api/src/users-and-auth/users-and-auth.module.ts
apps/frontend/src/app/account-settings/index.tsx
apps/frontend/src/app/resources/usage/components/HistoryTable/index.tsx
apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookFormActions.tsx
apps/frontend/src/components/PWAUpdatePrompt/index.tsx
apps/api/src/users-and-auth/auth/sso/oidc/oidc.strategy.ts
apps/api/src/email/email.service.ts
apps/frontend/src/app/resources/iot-settings/webhooks/types.ts
apps/frontend/src/app/user-management/details/components/permissionsForm/index.tsx
apps/frontend/src/app/resourceOverview/toolbar/toolbar.tsx
libs/plugins-frontend-ui/src/lib/components/user-search/UserSearch.tsx
apps/frontend/src/app/user-management/details/components/emailForm/index.tsx
apps/frontend/src/app/resources/details/useQrCodeAction.ts
apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.tsx
apps/frontend/src/app/confirm-email-change/index.tsx
apps/frontend/src/app/fabreader/FabreaderEditor/FabreaderEditor.tsx
apps/frontend/src/app/user-management/index.tsx
apps/frontend/src/app/resources/usage/components/StartSessionControls/index.tsx
apps/frontend/src/app/resources/usage/components/ActiveSessionDisplay/index.tsx
apps/api/src/resources/sse/sse.controller.ts
apps/frontend/src/app/resources/iot-settings/mqtt/pages/TestMqttConfig.tsx
apps/api/src/fabreader/reader.controller.ts
apps/api/src/resources/groups/resourceGroups.controller.ts
apps/frontend/src/app/reset-password/resetPassword.tsx
apps/frontend/src/app/mqtt/servers/MqttServerList.tsx
apps/frontend/src/app/app.tsx

Explore our documentation to understand the languages and file types we support and the files we ignore.

Check out our docs on how you can make Korbit work best for you and your team.

Loving Korbit!? Share us on LinkedIn Reddit and X

Comment on lines +48 to +49
const fabaccessDbFile = resolve(join(storageEnv.STORAGE_ROOT, 'attraccess.sqlite'));
const attraccessDbFile = resolve(join(storageEnv.STORAGE_ROOT, 'attraccess.sqlite'));
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Redundant Database File Paths category Functionality

Tell me more
What is the issue?

Both fabaccessDbFile and attraccessDbFile are pointing to the same file path, making the existence check redundant.

Why this matters

This redundancy means the fallback mechanism will never work as intended since both variables reference the same file.

Suggested change ∙ Feature Preview

Use different filenames for the old and new database paths:

const fabaccessDbFile = resolve(join(storageEnv.STORAGE_ROOT, 'fabaccess.sqlite'));
const attraccessDbFile = resolve(join(storageEnv.STORAGE_ROOT, 'attraccess.sqlite'));
Provide feedback to improve future suggestions

Nice Catch Incorrect Not in Scope Not in coding standard Other

💬 Looking for more details? Reply to this comment to chat with Korbit.

export * from './lib/auth-decorator';
export * from '@attraccess/database-entities';
export * as entities from '@attraccess/database-entities';
export * from '@fabaccess/database-entities';
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Over-exposed External Module category Design

Tell me more
What is the issue?

Using wildcard exports (*) from an external module breaks encapsulation and creates tight coupling.

Why this matters

Re-exporting everything from an external module makes the public API unstable and harder to maintain, as any changes in the external module automatically affect this module's API. This violates the Interface Segregation Principle.

Suggested change ∙ Feature Preview

Explicitly export only the needed types and functions:

export { Type1, Type2, function1 } from '@fabaccess/database-entities';
Provide feedback to improve future suggestions

Nice Catch Incorrect Not in Scope Not in coding standard Other

💬 Looking for more details? Reply to this comment to chat with Korbit.

@@ -1,4 +1,4 @@
export * from './attraccess-user/AttraccessUser';
export * from './FabAccessUser';
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inconsistent Component Directory Structure category Design

Tell me more
What is the issue?

Inconsistent directory structure pattern where FabAccessUser is in the root directory while other components are in their own subdirectories.

Why this matters

Breaking the established directory structure pattern makes the codebase less maintainable and harder to navigate. It also violates the principle of consistency in project organization.

Suggested change ∙ Feature Preview

Move the FabAccessUser component to its own directory to maintain consistency with other components:

export * from './fab-access-user/FabAccessUser';
Provide feedback to improve future suggestions

Nice Catch Incorrect Not in Scope Not in coding standard Other

💬 Looking for more details? Reply to this comment to chat with Korbit.

>
<Image src="/logo.png" alt="Attraccess" height={32} />
<span className="text-xl">Attraccess</span>
<Image src="/logo.png" alt="FabAccess" height={32} />
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Magic number in component category Readability

Tell me more
What is the issue?

Magic number used for image height makes the code less readable and the intent less clear.

Why this matters

Without context through a named constant, it's unclear why this specific height was chosen or how it relates to the design system.

Suggested change ∙ Feature Preview
const LOGO_HEIGHT = 32;
// Then use it in the component
<Image src="/logo.png" alt="FabAccess" height={LOGO_HEIGHT} />
Provide feedback to improve future suggestions

Nice Catch Incorrect Not in Scope Not in coding standard Other

💬 Looking for more details? Reply to this comment to chat with Korbit.

'\\.css$': 'identity-obj-proxy',
},
transformIgnorePatterns: ['node_modules/(?!(@attraccess)/)'],
transformIgnorePatterns: ['node_modules/(?!(@fabaccess)/)'],
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unexplained Complex Regex Pattern category Readability

Tell me more
What is the issue?

The regex pattern in transformIgnorePatterns is complex and lacks explanation about its purpose.

Why this matters

Without understanding the regex pattern's purpose, future developers may hesitate to modify it or misunderstand which node modules are being excluded from transformation.

Suggested change ∙ Feature Preview

Add a comment explaining the pattern's purpose:

// Exclude all node_modules from transformation except @fabaccess packages
transformIgnorePatterns: ['node_modules/(?!(@fabaccess)/)'],
Provide feedback to improve future suggestions

Nice Catch Incorrect Not in Scope Not in coding standard Other

💬 Looking for more details? Reply to this comment to chat with Korbit.

import { LoadedPluginManifest } from '@fabaccess/react-query-client';
import { create } from 'zustand';

export interface PluginManifestWithPlugin extends LoadedPluginManifest {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing interface purpose documentation category Documentation

Tell me more
What is the issue?

The interface lacks documentation explaining why this extension of LoadedPluginManifest is needed and what it provides.

Why this matters

Without understanding the purpose of this extension, future maintainers might struggle to understand when to use PluginManifestWithPlugin vs LoadedPluginManifest.

Suggested change ∙ Feature Preview
/** 
 * Extends LoadedPluginManifest to include the instantiated plugin instance,
 * enabling direct access to plugin functionality.
 */
export interface PluginManifestWithPlugin extends LoadedPluginManifest {
Provide feedback to improve future suggestions

Nice Catch Incorrect Not in Scope Not in coding standard Other

💬 Looking for more details? Reply to this comment to chat with Korbit.

@jappyjan jappyjan merged commit e32282d into main Jul 16, 2025
4 checks passed
@jappyjan jappyjan deleted the 164-rename-to-fabaccess-again branch July 16, 2025 15:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Rename to FabAccess again

2 participants