Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
8297d8f27d
v2.1.4: Security hardening, bug fixes, code quality improvements
...
- Move XOR keys to env vars (PRU_PROXY_KEY, PIPE_OBF_KEY)
- Fix multi-search to combine query + filters
- Fix deepTranslate to return clone instead of mutating
- Improve getBestStream quality matching and fallback
- Add input sanitization for all route params
- CORS blocks unknown origins in production
- Security headers in vercel.json at CDN level
- stats/genre uses Promise.allSettled for parallel execution
- Delete dead server.py, fix version strings
2026-06-25 10:34:12 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
1d0ec95f19
Update CHANGELOG with full diagnostic sweep results
2026-06-25 10:03:53 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
94421af2dd
Add no-cache headers to /random to prevent CDN caching
2026-06-25 10:03:22 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
7394a1c94c
Improve random entropy with multi-source seed
2026-06-25 10:00:28 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
b59ca7e1ec
Fix random (Date.now+hrtime seed) + character/staff 404 detection
2026-06-25 09:58:44 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
5acf8a2e1e
Fix diagnostic sweep bugs — tags, random, 404s, security headers
...
- Tags: data.TagCollection→data.MediaTagCollection (was returning empty array)
- Random: Math.random()*50→crypto.randomInt(1,500) for true randomness
- Character/Staff: return 404 instead of 500 on not-found
- Security: added X-XSS-Protection header
- All 44 endpoints tested in full diagnostic sweep
2026-06-25 09:56:58 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
00275adb42
Fix AniList queries — trending args, studio type arg, tags field name
...
- Trending: removed invalid trending:7/30 args (not in AniList schema)
- Studio: removed type:ANIME from Studio.media (not supported)
- Tags: TagCollection→MediaTagCollection, removed rank field
2026-06-25 09:26:18 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
90cdd26241
Fix tags query — TagCollection→MediaTagCollection, remove rank field
2026-06-25 09:21:27 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
4509c0add3
Fix character/staff queries — remove dateOfDeath, fix MediaEdge role field
...
- Character: removed dateOfDeath (not in AniList schema), changed role→characterRole
- Staff: removed dateOfDeath, removed invalid role field from staffMedia edges
- Fixes 400 errors on /api/character/:id and /api/staff/:id
2026-06-25 09:18:45 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
d1dec20788
Update CHANGELOG v2.1.3 with working endpoints and bug fixes
2026-06-25 09:02:24 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
bff4c5b7c6
Fix getWatchSources to handle both raw and slugged episode IDs
...
- Handle raw pipe IDs (animedao:witch-hat-atelier:1) with colon separator
- Handle slugged IDs (watch/bonk/147105/sub/animedao-1) with slash separator
- Use rawPipeId for decoded ID recovery in both cases
2026-06-25 08:59:58 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
84d7e75372
Fix getWatchSources slug matching after injectSourceSlugs mutation
...
- Match slug against last segment of ep.id (after injectSourceSlugs)
- Use rawPipeId + translateId to recover original decoded ID
- Fixes 'Episode slug not found' error for all providers
2026-06-25 08:57:05 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
e35d934190
v2.1.3: Pipe resilience — retry logic, caching, optimized streaming
...
- Added pipeRequest() with retry + exponential backoff (3 attempts)
- Cached episodes (5min) and sources (10min) responses
- Confirmed kiwi/bonk CDNs serve real content, bee/ally serve decoys
- Updated version to 2.1.3 across package.json, health, OpenAPI
2026-06-25 08:53:02 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
398db2b4f0
docs: v2.1.2 changelog — pru proxy discovery and streaming architecture
2026-06-25 08:34:58 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
94b59b3bc9
fix: add Origin header to pipe requests to bypass Cloudflare 444
2026-06-25 08:29:04 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
6cd2b9a19e
feat: return raw CDN URLs for streams (browser loads directly via CORS *); keep subtitle proxy for third-party CDNs
2026-06-25 08:22:34 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
76c47368a7
feat: proxy through pru.ultracloud.cc for real video content
2026-06-25 08:10:11 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
f208becd27
fix: rewrite relative M3U8 URLs (variant playlists like 313625720.m3u8)
2026-06-25 08:06:39 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
74f3dcd7c3
feat: pipe XOR decode + CDN CORS proxy for streaming
...
- decodePipeResponse now XOR-decodes with obfuscation key before gzip
- Updated pipe version to 0.2.0 to match miruro.tv
- Added /api/proxy endpoint for CORS-safe M3U8/VTT streaming
- Proxied stream/subtitle URLs through /api/proxy for browser playback
- M3U8 content rewritten to proxy variant playlists and segments
2026-06-25 08:04:13 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
90b0999d7d
fix: store original base64 rawPipeId in deepTranslate + use decoded id in getWatchSources
2026-06-25 04:10:34 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
f7b3e32cb7
fix: pipe stream resolution - rawPipeId + creatorInfo
2026-06-25 03:55:01 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
a65138e575
fix: preserve rawPipeId for stream resolution + fix creatorInfo message overwrite + match slug against tail of episode ID
2026-06-25 03:51:13 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
399f9b1917
fix: Vercel deployment - skip app.listen() on Vercel, fix vercel.json routes
2026-06-25 02:37:27 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
4ec1ff69f4
feat: provider capabilities, enriched metadata, skip times (v2.1.0)
2026-06-25 02:02:47 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
56e3500d3e
fix: extractSubtitles returns empty array when subtitles undefined (dub)
2026-06-25 01:48:10 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
9b1ac11ff0
feat: improve subtitle extraction, quality fallback, and documentation
2026-06-25 01:43:11 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
3ab0bae18d
v2.0.0: Update index.html — 35 endpoints
2026-06-25 01:19:52 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
33e5e8e136
v2.0.0: Sync all docs — README, endpoints, OpenAPI, test suite
2026-06-25 01:18:28 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
3675bbba77
v2.0.0: Major upgrade — 35 endpoints, compression, streaming improvements, new features
2026-06-25 01:09:35 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
9ada6e1016
v1.4.0: Add creator attribution middleware
2026-06-25 00:54:18 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
3a28c4d182
v1.4.0: Fix Vercel deployment, security headers, rate limiter, cache cleanup
2026-06-25 00:52:26 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
68f7ea7cf4
Update README.md
2026-06-10 22:11:26 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
37e70c3bda
Update README.md
2026-06-10 22:06:57 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
af08c91624
Update README.md
2026-06-10 22:05:04 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
1433afdca1
v1.3.0: Full landing page upgrade + feature parity with AniKotoAPI
...
- Full index.html rewrite with AniKotoAPI-style features:
* Canvas particle effects (cyan particles)
* Scroll-reveal animations (IntersectionObserver)
* Animated stat counters (count up on scroll)
* Infinite scrolling marquee (8 feature badges)
* Live interactive API console (5 presets: Search, Trending, Episodes, Info, Health)
* Sidebar endpoint explorer (16 endpoints, multi-language tabs: cURL/JS/Python)
* 4 interactive playground cards (Search, Info, Episodes, Trending)
* Custom scrollbar, JetBrains Mono font
* 4-column grid footer with API/Resources/Legal
* Fixed header with scroll-aware glass blur
* Ambient orb gradient animations
* CTA section with gradient overlay
- Added public/404.html (glitch animation error page)
- Added public/manifest.json (PWA, theme: #38bdf8)
- Added public/robots.txt (Allow /, Disallow /api)
- Added public/sitemap.xml (4 URLs)
- Added public/tos.html (13 sections)
- Added public/privacy.html (8 sections)
- Added .env.example, CONTRIBUTING.md, LICENSE, render.yaml, test.js
- Added docs/ (5 files: index, endpoints, streaming, examples, architecture)
- Updated server.js: clean URL routes (/tos, /privacy), 404.html fallback
- Updated package.json: devDependencies nodemon, repository, dev script
- All branding: AniKotoAPI → MiruroAPI, cyan color scheme (#38bdf8)
2026-06-09 16:21:30 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
b73d8d09bf
fix: replace SVG favicons with real Miruro icons scraped from miruro.tv HTML
2026-06-09 15:59:55 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
99d7c15750
docs: full README rewrite matching AniKotoAPI style - emojis, blockquote endpoints, parameter tables, roadmap, troubleshooting, star history, author footer
2026-06-09 15:48:46 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
faa4888f77
docs: comprehensive README upgrade with badges, visuals, real API data, streaming flow, provider tables, TypeScript schemas
2026-06-09 15:44:19 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
a1cc22e84a
feat: integrate real Miruro assets from official domains
...
Replaced placeholder SVGs with actual scraped assets:
- favicon.svg → icon-dark.svg (real Miruro dark mode SVG)
- share.svg → og-image.png (real maskable icon for OG/Twitter)
- Added: icon-light.svg, icon-512x512.png, favicon.ico, apple-touch-icon
- Nav logos now use real Miruro icon image instead of text div
- OG meta tags updated: SVG→PNG for proper social previews
- Both index.html and docs.html updated
- Version badge: v1.1.0 → v1.2.0
2026-06-09 15:22:27 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
d2193670f4
feat: add scraped assets from official Miruro domains
...
Scraped from miruro.com, miruro.bz, miruro.ru, status.miruro.com:
- 6 favicons: dark/light SVG, 512px PNG, ICO, apple-touch, maskable
- 1 logo: status page logo (12KB)
- 4 fonts: Inter, FontAwesome brands/solid, CSS
- 18 media: testimonial avatars from homepage
- README documenting sources and structure
All streaming domains use identical assets.
SVG favicons support dark/light mode via prefers-color-scheme.
2026-06-09 15:15:00 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
20041a8984
v1.2.0: fix critical response format bug (18/18 endpoints passing)
...
Root cause: createApiRoutes() parameter shift
- Function signature was (app, jsonResponse, jsonError)
- Called from server.js as apiRoutes(jsonResponse, jsonError)
- All params shifted: jsonResponse→jsonError, jsonError→undefined
- Every success response returned {success: false, message: data}
- Health worked because it used res.json() directly
Fix: Removed unused 'app' parameter from createApiRoutes()
All 18 endpoints now return {success: true, results: data}
2026-06-09 15:04:26 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
14d5c22fc7
fix: remove unused 'app' param from createApiRoutes to fix jsonError/jsonResponse parameter shift
...
The function signature was (app, jsonResponse, jsonError) but called
with (jsonResponse, jsonError) from server.js, causing all parameters
to shift by one. jsonResponse() was actually calling jsonError(),
returning {success: false, message: data} instead of
{success: true, results: data}.
2026-06-09 15:00:58 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
240e90fe51
chore: force redeploy to fix response format
2026-06-09 14:45:55 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
18a73c324e
feat: premium landing page, Swagger UI docs, full OG meta stack
...
- Premium landing page with nav, hero, stats, streaming flow, endpoint cards
- Full OG meta stack (OG, Twitter Card, JSON-LD WebAPI schema)
- SVG favicon matching miruro.tv icon style
- SVG share image for social sharing (1200x630)
- Dedicated docs.html with custom header and Swagger UI styling
- Canonical URLs, theme-color, robots meta
- Apple-touch-icon and mask-icon from miruro.tv
- Responsive design (mobile-friendly)
- Font: Inter (Google Fonts)
2026-06-09 14:38:44 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
4b083a9bf7
docs: rewrite all files with AniKotoAPI documentation style
...
- Box-style file headers (======= border, @description, @exports, @author, @license)
- Section headers (═════════════════════════════════════════)
- Function-level JSDoc comments with @param, @returns, @example
- Inline notes for non-obvious logic (lazy eviction, pipe decoding, slug resolution)
- Feature markers (---- FEATURE: description ----)
- Footer on every module (═══════════ END: filename ═══════════)
- Added /stats and /openapi endpoints to router
2026-06-09 14:27:29 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
b0aa5d2281
docs: update URLs to mirurotvapi.vercel.app
2026-06-09 14:19:28 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
c13e0bbd7e
feat: v1.1.0 - Swagger docs, mappings, Docker, premium landing page
...
- Swagger UI interactive docs at /docs
- OpenAPI 3.0 spec at /openapi.json
- mappings field in episodes response (anilistId, malId, kitsuId)
- Docker support (Dockerfile + .dockerignore)
- Premium landing page with try-it buttons (Walter-style)
- Health endpoint with providers list and endpoint count
2026-06-09 14:16:33 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
85b8dcfcf0
docs: update production URL to miruroapi-zeta.vercel.app
2026-06-09 14:06:45 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
0f8b295b7b
chore: trigger deployment on new project
2026-06-09 14:00:08 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
df79875917
chore: redeploy with SSO protection disabled
2026-06-09 13:56:56 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
7420ef0d40
chore: trigger Vercel deployment
2026-06-09 13:53:40 +05:30
Sʜɪɴᴇɪ Nᴏᴜᴢᴇɴ
776e1b9649
feat: MiruroAPI v1.0.0 - Free anime streaming API
...
- 16 API endpoints powered by AniList GraphQL
- Miruro pipe integration for streaming sources
- 12 streaming providers (kiwi, pewe, bee, bonk, etc.)
- M3U8 streaming URLs with subtitles and skip timestamps
- In-memory caching with TTL
- CORS support and health endpoint
2026-06-09 13:51:39 +05:30