@necrolab/dashboard 0.4.56 → 0.4.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,4 +1,8 @@
1
- # 🎫 Necro Dashboard
1
+ <div align="center">
2
+ <img src="./artwork/image.png" alt="Dashboard" width="400">
3
+ </div>
4
+
5
+ # 🎫 Dashboard
2
6
 
3
7
  A sophisticated PWA dashboard for managing ticket purchasing automation across multiple platforms. Built with Vue 3 and real-time WebSocket communication.
4
8
 
@@ -20,34 +24,32 @@ Visit `http://localhost:5173` and you're live.
20
24
  | `npm run build` | Production build with PWA |
21
25
  | `npm run lint` | Code formatting |
22
26
 
23
- **Frontend Stack**
27
+ ### 🧱 Frontend Stack
24
28
 
25
- - Vue 3 + Composition API
26
- - Pinia state management
27
- - TailwindCSS + SCSS
28
- - PWA with offline support
29
+ - Vue 3 + Composition API
30
+ - Pinia state management
31
+ - TailwindCSS + SCSS
32
+ - PWA with offline support
29
33
 
30
- **Backend Stack**
34
+ ### 🛠 Backend Stack
31
35
 
32
- - Express.js with WebSockets
33
- - MessagePack serialization for big socket messages
34
- - Real-time message batching
35
- - Platform abstraction layer
36
+ - Express.js with WebSockets
37
+ - MessagePack serialization
38
+ - Real-time message batching
39
+ - Platform abstraction layer
36
40
 
37
41
  ## 📱 PWA Support
38
42
 
39
- Built as a Progressive Web App with:
40
-
41
- - 📲 Install to home screen
42
- - 🔄 Background sync
43
- - 📶 Offline functionality
44
- - 🎨 Native app feel
43
+ - 📲 Install to home screen
44
+ - 🔄 Background sync
45
+ - 📶 Offline functionality
46
+ - 🎨 Native app feel
45
47
 
46
48
  ## 🛠️ Development
47
49
 
48
- The app runs in mock mode by default for development. Backend simulates bot operations while frontend provides full UI functionality.
50
+ Runs in mock mode by default. Backend simulates bot operations; frontend provides full UI functionality.
49
51
 
50
- **File Structure**
52
+ ### 🗂️ File Structure
51
53
 
52
54
  ```
53
55
  src/
@@ -61,5 +63,3 @@ backend/
61
63
  ├─ mock-data.js # Development data
62
64
  └─ endpoints.js # API route definitions
63
65
  ```
64
-
65
- ---
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@necrolab/dashboard",
3
- "version": "0.4.56",
3
+ "version": "0.4.57",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "build": "rm -rf dist && npx workbox-cli generateSW workbox-config.cjs && vite build",
@@ -504,7 +504,7 @@ const openInBrowser = (debug) => {
504
504
  if (!props.task.openerLink) return;
505
505
  ui.showSuccess(`Opening in browser ${debug ? "(debug)" : ""}`);
506
506
  const input = props.task.openerLink;
507
- const data = JSON.parse(atob(input.split("://")[1]));
507
+ const data = JSON.parse(atob(input.split("://").pop()));
508
508
  data.config.debug = debug;
509
509
  const out = "necro://" + btoa(JSON.stringify(data));
510
510
  openInNewTab(out);
@@ -398,7 +398,7 @@ const parseTmEventUrl = (url) => {
398
398
  };
399
399
  };
400
400
 
401
- const isEU = (siteId) => !["US", "AU", "UK", "LN", "CA", "NZ", "IE"].includes(siteId.replaceAll("TM_", ""));
401
+ const isEU = (siteId) => !["US", "AU", "UK", "CA", "NZ", "IE"].includes(siteId.split("_")?.[1] || siteId);
402
402
 
403
403
  const removeDuplicates = (arr) => [...new Set(arr)];
404
404
 
@@ -209,7 +209,7 @@ const uniqEventIds = computed(() => {
209
209
  const ids = [
210
210
  ...new Set(
211
211
  Object.values(ui.tasks)
212
- .filter((t) => t.siteId === ui.currentCountry.siteId && !t.eventId.includes("@"))
212
+ .filter((t) => t.siteId === ui.currentCountry.siteId && !t.eventId?.includes("@"))
213
213
  .map((v) => `${v.eventName} (${v.eventId})`)
214
214
  ),
215
215
  ];
@@ -0,0 +1,41 @@
1
+ #!/bin/bash
2
+
3
+ # USAGE: ./git-force-switch.sh target-branch-name
4
+
5
+ set -e
6
+
7
+ TARGET_BRANCH="$1"
8
+
9
+ if [ -z "$TARGET_BRANCH" ]; then
10
+ echo "❌ Usage: $0 <branch-name>"
11
+ exit 1
12
+ fi
13
+
14
+ echo "🔧 Forcing checkout to '$TARGET_BRANCH'..."
15
+
16
+ # Step 1: Make sure Git respects case differences
17
+ git config core.ignoreCase false
18
+
19
+ # Step 2: Try checkout to see if it fails and capture errors
20
+ ERROR_OUTPUT=$(git checkout "$TARGET_BRANCH" 2>&1) || true
21
+
22
+ # Step 3: Check if it failed due to untracked files
23
+ if echo "$ERROR_OUTPUT" | grep -q "would be overwritten by checkout"; then
24
+ echo "⚠️ Conflicting untracked files detected. Cleaning them up..."
25
+
26
+ # Extract file paths and delete them
27
+ echo "$ERROR_OUTPUT" |
28
+ grep "^\s" |
29
+ sed 's/^[ \t]*//' |
30
+ while read -r FILE; do
31
+ if [ -f "$FILE" ] || [ -d "$FILE" ]; then
32
+ echo "🗑️ Removing $FILE"
33
+ rm -rf "$FILE"
34
+ fi
35
+ done
36
+
37
+ echo "🔁 Retrying checkout..."
38
+ git checkout "$TARGET_BRANCH"
39
+ else
40
+ echo "✅ Switched to $TARGET_BRANCH successfully."
41
+ fi
@@ -1,60 +0,0 @@
1
- {
2
- "permissions": {
3
- "allow": [
4
- "Bash(npm run lint)",
5
- "Bash(find:*)",
6
- "Bash(ls:*)",
7
- "Bash(grep:*)",
8
- "Bash(npm run build:*)",
9
- "Bash(npm view:*)",
10
- "Bash(npm run dev:*)",
11
- "Bash(sudo rm:*)",
12
- "Bash(rm:*)",
13
- "Bash(rg:*)",
14
- "Bash(/opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/vendor/ripgrep/arm64-darwin/rg -n \"const DEBUG\" /Users/luca/Documents/GitHub/Necro/Dashboard/src/views/)",
15
- "Bash(/opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/vendor/ripgrep/arm64-darwin/rg -n \"border-2 border-dark-550\" /Users/luca/Documents/GitHub/Necro/Dashboard/src/)",
16
- "Bash(/opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/vendor/ripgrep/arm64-darwin/rg -n \"bg-dark-500\" /Users/luca/Documents/GitHub/Necro/Dashboard/src/)",
17
- "Bash(/opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/vendor/ripgrep/arm64-darwin/rg -n \"flex items-center justify-center\" /Users/luca/Documents/GitHub/Necro/Dashboard/src/)",
18
- "Bash(/opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/vendor/ripgrep/arm64-darwin/rg -n \"col-span.*flex.*items-center.*justify-center\" /Users/luca/Documents/GitHub/Necro/Dashboard/src/)",
19
- "Bash(/opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/vendor/ripgrep/arm64-darwin/rg -n \"button.*flex.*items-center.*justify-center.*gap\" /Users/luca/Documents/GitHub/Necro/Dashboard/src/)",
20
- "Bash(/opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/vendor/ripgrep/arm64-darwin/rg -n \"import.*useUIStore\" /Users/luca/Documents/GitHub/Necro/Dashboard/src/)",
21
- "Bash(/opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/vendor/ripgrep/arm64-darwin/rg -n \"const.*ref\\(\" /Users/luca/Documents/GitHub/Necro/Dashboard/src/)",
22
- "Bash(/opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/vendor/ripgrep/arm64-darwin/rg -n \"button-default.*bg-dark-400.*w-48.*text-xs.*flex.*items-center.*justify-center.*gap-x-2\" /Users/luca/Documents/GitHub/Necro/Dashboard/src/)",
23
- "Bash(/opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/vendor/ripgrep/arm64-darwin/rg -n \"const DEBUG.*window\\.location\" /Users/luca/Documents/GitHub/Necro/Dashboard/src/)",
24
- "Bash(/opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/vendor/ripgrep/arm64-darwin/rg -A5 -B5 \"input-incrementer\" /Users/luca/Documents/GitHub/Necro/Dashboard/src/components/Tasks/CreateTaskTM.vue)",
25
- "Bash(/opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/vendor/ripgrep/arm64-darwin/rg -A2 -B2 \"label-override\" /Users/luca/Documents/GitHub/Necro/Dashboard/src/assets/css/main.scss)",
26
- "Bash(/opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/vendor/ripgrep/arm64-darwin/rg -n \"MultiDropdown\" /Users/luca/Documents/GitHub/Necro/Dashboard/src/)",
27
- "Bash(/opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/vendor/ripgrep/arm64-darwin/rg -n \"ant-select.*multiple\" /Users/luca/Documents/GitHub/Necro/Dashboard/src/)",
28
- "Bash(/opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/vendor/ripgrep/arm64-darwin/rg -n \"multiple.*true\" /Users/luca/Documents/GitHub/Necro/Dashboard/src/)",
29
- "Bash(/opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/vendor/ripgrep/arm64-darwin/rg -n \"a-select\" /Users/luca/Documents/GitHub/Necro/Dashboard/src/)",
30
- "Bash(/opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/vendor/ripgrep/arm64-darwin/rg -n \"Select\" /Users/luca/Documents/GitHub/Necro/Dashboard/src/)",
31
- "Bash(/opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/vendor/ripgrep/arm64-darwin/rg -A5 -B5 \"mode.*multiple\" /Users/luca/Documents/GitHub/Necro/Dashboard/src/components/Tasks/)",
32
- "Bash(/opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/vendor/ripgrep/arm64-darwin/rg -A10 -B5 \"a-select\" /Users/luca/Documents/GitHub/Necro/Dashboard/src/components/Tasks/CreateTaskTM.vue)",
33
- "Bash(/opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/vendor/ripgrep/arm64-darwin/rg -n \"CountryChooser\\|currentCountry\" /Users/luca/Documents/GitHub/Necro/Dashboard/src/views/Tasks.vue)",
34
- "Bash(/opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/vendor/ripgrep/arm64-darwin/rg -n \"currentModule\\|CountryChooser\" /Users/luca/Documents/GitHub/Necro/Dashboard/src/components/ui/Navbar.vue)",
35
- "Bash(/opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/vendor/ripgrep/arm64-darwin/rg -l \"CountryChooser\" /Users/luca/Documents/GitHub/Necro/Dashboard/src/)",
36
- "Bash(/opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/vendor/ripgrep/arm64-darwin/rg -n \"bg-dark-400.*button\\|button.*bg-dark-400\" /Users/luca/Documents/GitHub/Necro/Dashboard/src/views/Tasks.vue)",
37
- "Bash(npm install:*)",
38
- "Bash(sudo chown:*)",
39
- "Bash(sudo npm install:*)",
40
- "Bash(node:*)",
41
- "Bash(git checkout:*)",
42
- "Bash(npx vue-tsc:*)",
43
- "Bash(npx vite build:*)",
44
- "Bash(npx eslint:*)",
45
- "Bash(cp:*)",
46
- "Bash(sed:*)",
47
- "Bash(true)",
48
- "Bash(./run build)",
49
- "Bash(mv:*)",
50
- "Bash(chown:*)",
51
- "Bash(chmod:*)",
52
- "Bash(timeout 10s npm run dev)",
53
- "Bash(gtimeout:*)",
54
- "Bash(echo $SHELL)",
55
- "Bash(mkdir:*)",
56
- "Bash(base64:*)"
57
- ],
58
- "deny": []
59
- }
60
- }