Offline - Alle Schreibzugriffe von API-Nutzern laufen über eine Warteschlange in IndexedDB (services/syncQueue.js): FIFO, zusammengefasste Updates, Wiederholung bei Netz/Sichtbarkeit/Backoff, 4xx wird als Fehler gemeldet. - Medien-Uploads liegen mit Bytes in der Queue, erscheinen sofort mit Marker und werden nach dem Upload durch das Server-Objekt ersetzt. - PWA-Modus mit Service Worker für die App-Hülle; API nie gecacht. npm run build erzeugt dist/pwa. - Speicherzustand im Panel: ausstehend / Fehler mit Wiederholen-Knopf, Verbindungsanzeige im Header. Event - Event entsteht erst mit dem ersten Eintrag; jede Löschung fragt nach. - Key Image als 4:3-Rahmen, Galerie mit Video, mehrere Sprachnotizen mit Notiz, Live-Pegel beim Aufnehmen, WAV-Umwandlung für lokale Aufnahmen. - Neue Felder: Zeitraum, Kategorie, Personen, Meilenstein; Stimmung als kompakte Zeile mit ausklappbarer Punktfarbe. Oberfläche - Untere Leiste: Darstellung und Zoom links, Jahres-Pille mittig, Plus rechts. - Logos und Goldpalette, Login neu, zehn Wellen-Presets mit Vorschau, Hintergrundbilder als Kacheln, Kontomenü und Einstellungen bereinigt, Escape schließt Ebenen, größere Touch-Ziele. - Alten Sync-Service und ungenutzte Legacy-Seiten entfernt. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
91 lines
2.4 KiB
JavaScript
91 lines
2.4 KiB
JavaScript
import js from '@eslint/js'
|
|
import globals from 'globals'
|
|
import pluginVue from 'eslint-plugin-vue'
|
|
import pluginQuasar from '@quasar/app-vite/eslint'
|
|
import prettierSkipFormatting from '@vue/eslint-config-prettier/skip-formatting'
|
|
|
|
export default [
|
|
{
|
|
/**
|
|
* Ignore the following files.
|
|
* Please note that pluginQuasar.configs.recommended() already ignores
|
|
* the "node_modules" folder for you (and all other Quasar project
|
|
* relevant folders and files).
|
|
*
|
|
* ESLint requires "ignores" key to be the only one in this object
|
|
*/
|
|
// ignores: []
|
|
},
|
|
|
|
...pluginQuasar.configs.recommended(),
|
|
js.configs.recommended,
|
|
|
|
/**
|
|
* https://eslint.vuejs.org
|
|
*
|
|
* pluginVue.configs.base
|
|
* -> Settings and rules to enable correct ESLint parsing.
|
|
* pluginVue.configs[ 'flat/essential']
|
|
* -> base, plus rules to prevent errors or unintended behavior.
|
|
* pluginVue.configs["flat/strongly-recommended"]
|
|
* -> Above, plus rules to considerably improve code readability and/or dev experience.
|
|
* pluginVue.configs["flat/recommended"]
|
|
* -> Above, plus rules to enforce subjective community defaults to ensure consistency.
|
|
*/
|
|
...pluginVue.configs[ 'flat/essential' ],
|
|
|
|
{
|
|
languageOptions: {
|
|
ecmaVersion: 'latest',
|
|
sourceType: 'module',
|
|
|
|
globals: {
|
|
...globals.browser,
|
|
...globals.node, // SSR, Electron, config files
|
|
process: 'readonly', // process.env.*
|
|
ga: 'readonly', // Google Analytics
|
|
cordova: 'readonly',
|
|
Capacitor: 'readonly',
|
|
chrome: 'readonly', // BEX related
|
|
browser: 'readonly' // BEX related
|
|
}
|
|
},
|
|
|
|
// add your custom rules here
|
|
rules: {
|
|
'prefer-promise-reject-errors': 'off',
|
|
|
|
// allow debugger during development only
|
|
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
|
|
}
|
|
},
|
|
|
|
{
|
|
// Vitest runs with `globals: true`, so the test APIs are ambient.
|
|
files: [ 'test/vitest/**/*.js' ],
|
|
languageOptions: {
|
|
globals: {
|
|
describe: 'readonly',
|
|
it: 'readonly',
|
|
test: 'readonly',
|
|
expect: 'readonly',
|
|
vi: 'readonly',
|
|
beforeEach: 'readonly',
|
|
afterEach: 'readonly',
|
|
beforeAll: 'readonly',
|
|
afterAll: 'readonly'
|
|
}
|
|
}
|
|
},
|
|
|
|
{
|
|
files: [ 'src-pwa/custom-service-worker.js' ],
|
|
languageOptions: {
|
|
globals: {
|
|
...globals.serviceworker
|
|
}
|
|
}
|
|
},
|
|
|
|
prettierSkipFormatting
|
|
]
|