Commit Graph
51 Commits
Author SHA1 Message Date
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