* chore: only set visibility for container particles * create reusable controls indicator for reply or new * compress the size of top bar * refactor: restructure state, routing, and more * introduce stream compose flow * feat: compose new stream full flow * implement stream player * fix: prevent redirect for signed object urls * fix: implement stream playback cleaner structure * refactor: layout file name * feat: show stream name in breadcrumbs * chore: tweak padding * chore: adjust position of audio bars * feat: show latest particle preview in stream list * fix: remove console log * refactor: reorder classes * fix: avoid passing in updated_at to firestore particle * refactor: extract properties for container particles to flat fields in firestore * make the stream previews look alive * feat: show audio bars during audio clip playback * feat: order streams by last child creation * feat: playback where I left off * chore: remove unused store * fix: recording mode not using shared state * chore: clean unused variable * remove unused imports * fix: improve controls indicator immersion * feat: show playback progress in bar & auto-play text * feat: auto-exit stream on playback completion * fix: jittery media playback progress * fix: navigate during state change is invalid with react router * fix: buggy exit progress when changing clips * feat: add app icon * update package.json info * feat: only show streams visible to me * feat: show seen indicator on particles * fix: prevent unnecessary effects * fix: play new particle after playback is ended * use contols indicator for exit timer
67 lines
2.0 KiB
JSON
67 lines
2.0 KiB
JSON
{
|
|
"name": "llink",
|
|
"productName": "llink",
|
|
"version": "1.0.0",
|
|
"description": "Flowy.llink is a team communication app for teams",
|
|
"main": ".vite/build/main.js",
|
|
"private": true,
|
|
"scripts": {
|
|
"start": "electron-forge start",
|
|
"package": "electron-forge package",
|
|
"make": "electron-forge make",
|
|
"publish": "electron-forge publish",
|
|
"lint": "eslint --ext .ts,.tsx .",
|
|
"compile": "npx tsc --noEmit 2>&1 | grep '^src/'"
|
|
},
|
|
"keywords": [],
|
|
"author": {
|
|
"name": "talksik",
|
|
"email": "[email protected]"
|
|
},
|
|
"license": "MIT",
|
|
"packageManager": "[email protected]",
|
|
"devDependencies": {
|
|
"@electron-forge/cli": "^7.11.1",
|
|
"@electron-forge/maker-deb": "^7.11.1",
|
|
"@electron-forge/maker-rpm": "^7.11.1",
|
|
"@electron-forge/maker-squirrel": "^7.11.1",
|
|
"@electron-forge/maker-zip": "^7.11.1",
|
|
"@electron-forge/plugin-auto-unpack-natives": "^7.11.1",
|
|
"@electron-forge/plugin-fuses": "^7.11.1",
|
|
"@electron-forge/plugin-vite": "^7.11.1",
|
|
"@electron/fuses": "^1.8.0",
|
|
"@tailwindcss/vite": "^4.2.0",
|
|
"@tanstack/eslint-plugin-query": "^5.91.4",
|
|
"@types/electron-squirrel-startup": "^1.0.2",
|
|
"@types/node": "^25.3.0",
|
|
"@types/react": "^19.2.14",
|
|
"@types/react-dom": "^19.2.3",
|
|
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
|
"@typescript-eslint/parser": "^5.62.0",
|
|
"@vitejs/plugin-react": "^5.1.4",
|
|
"electron": "40.6.0",
|
|
"eslint": "^8.57.1",
|
|
"eslint-plugin-import": "^2.32.0",
|
|
"typescript": "^5.9.3",
|
|
"vite": "^5.4.21"
|
|
},
|
|
"dependencies": {
|
|
"@tanstack/react-query": "^5.90.21",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"electron-squirrel-startup": "^1.0.1",
|
|
"firebase": "^12.10.0",
|
|
"lucide-react": "^0.575.0",
|
|
"radix-ui": "^1.4.3",
|
|
"react": "^19.2.4",
|
|
"react-dom": "^19.2.4",
|
|
"react-router-dom": "^7.13.0",
|
|
"shadcn": "^3.8.5",
|
|
"tailwind-merge": "^3.5.0",
|
|
"tailwindcss": "^4.2.0",
|
|
"tw-animate-css": "^1.4.0",
|
|
"zod": "^4.3.6",
|
|
"zustand": "^5.0.11"
|
|
}
|
|
}
|