maziggy bbc5ccb982 Library Upload Doesn't Show New File Until Page Reload ([#704](https://github.com/maziggy/bambuddy/issues/704)) — After uploading a file in the Library file manager, the file list didn't update until the user reloaded the browser. The upload endpoint used `db.flush()` instead of `db.commit()`, so the new row was only written to the database *after* the response was sent to the client. The frontend immediately refetched the file list upon receiving the response, but a new database session couldn't see the uncommitted row — resulting in stale data. Fixed by committing before the response is returned. Also fixed the same race condition in folder create, folder update, and file update endpoints. Reported by @shadowjig. hai 6 meses
..
docs 583c374f01 Add Virtual Printer Proxy Mode for remote printing hai 8 meses
mockups ccdb084f23 - Refactored printer card's AMS section for better experience hai 9 meses
public a010134c09 Disable busy printers in print modal's reprint mode (#622) hai 7 meses
src bbc5ccb982 Library Upload Doesn't Show New File Until Page Reload ([#704](https://github.com/maziggy/bambuddy/issues/704)) — After uploading a file in the Library file manager, the file list didn't update until the user reloaded the browser. The upload endpoint used `db.flush()` instead of `db.commit()`, so the new row was only written to the database *after* the response was sent to the client. The frontend immediately refetched the file list upon receiving the response, but a new database session couldn't see the uncommitted row — resulting in stale data. Fixed by committing before the response is returned. Also fixed the same race condition in folder create, folder update, and file update endpoints. Reported by @shadowjig. hai 6 meses
.gitignore 09677861ba Added screenshots hai 10 meses
.npmrc 22ac7e97bb Closes #426 hai 7 meses
README.md 09677861ba Added screenshots hai 10 meses
eslint.config.js 49acd8c148 Improved frontend tests hai 8 meses
index.html 711140ddf9 Added mobile PWA support hai 10 meses
package-lock.json 5a8aa61f44 Bump PyJWT >=2.12.0 (CVE-2026-32597) and flatted >=3.4.0 hai 7 meses
package.json bffbac54e4 Add on-screen virtual keyboard for SpoolBuddy kiosk UI hai 7 meses
postcss.config.js 09677861ba Added screenshots hai 10 meses
tailwind.config.js 7767851975 Add SpoolBuddy tag detection modal and fix NFC reader silent failure hai 7 meses
tsconfig.app.json 9ba4ef6355 Fix docker build hai 10 meses
tsconfig.json 09677861ba Added screenshots hai 10 meses
tsconfig.node.json 09677861ba Added screenshots hai 10 meses
vite.config.ts 46f209e2ac Add SpoolBuddy AMS slot config, external slots, and dashboard redesign hai 7 meses
vitest.config.ts 104b9d4a25 Fix external spool ams_mapping2 slot_id (Issue #213) hai 8 meses

README.md

React + TypeScript + Vite

This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.

Currently, two official plugins are available:

React Compiler

The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.

Expanding the ESLint configuration

If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:

export default defineConfig([
  globalIgnores(['dist']),
  {
    files: ['**/*.{ts,tsx}'],
    extends: [
      // Other configs...

      // Remove tseslint.configs.recommended and replace with this
      tseslint.configs.recommendedTypeChecked,
      // Alternatively, use this for stricter rules
      tseslint.configs.strictTypeChecked,
      // Optionally, add this for stylistic rules
      tseslint.configs.stylisticTypeChecked,

      // Other configs...
    ],
    languageOptions: {
      parserOptions: {
        project: ['./tsconfig.node.json', './tsconfig.app.json'],
        tsconfigRootDir: import.meta.dirname,
      },
      // other options...
    },
  },
])

You can also install eslint-plugin-react-x and eslint-plugin-react-dom for React-specific lint rules:

// eslint.config.js
import reactX from 'eslint-plugin-react-x'
import reactDom from 'eslint-plugin-react-dom'

export default defineConfig([
  globalIgnores(['dist']),
  {
    files: ['**/*.{ts,tsx}'],
    extends: [
      // Other configs...
      // Enable lint rules for React
      reactX.configs['recommended-typescript'],
      // Enable lint rules for React DOM
      reactDom.configs.recommended,
    ],
    languageOptions: {
      parserOptions: {
        project: ['./tsconfig.node.json', './tsconfig.app.json'],
        tsconfigRootDir: import.meta.dirname,
      },
      // other options...
    },
  },
])