Repository navigation
Conversation
…3380) * chore(deps): bump the oxc group across 1 directory with 5 updates Bumps the oxc group with 5 updates in the / directory: | Package | From | To | | --- | --- | --- | | [oxc-parser](https://github.com/oxc-project/oxc/tree/HEAD/napi/parser) | `0.150.0` | `0.151.0` | | [@oxlint/plugins](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint-plugins) | `1.83.0` | `1.85.0` | | [oxfmt](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt) | `0.68.0` | `0.70.0` | | [oxlint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint) | `1.83.0` | `1.85.0` | | [oxlint-plugin-eslint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint-plugin-eslint) | `1.83.0` | `1.85.0` | Updates `oxc-parser` from 0.150.0 to 0.151.0 - [Release notes](https://github.com/oxc-project/oxc/releases) - [Changelog](https://github.com/oxc-project/oxc/blob/main/napi/parser/CHANGELOG.md) - [Commits](https://github.com/oxc-project/oxc/commits/crates_v0.151.0/napi/parser) Updates `@oxlint/plugins` from 1.83.0 to 1.85.0 - [Release notes](https://github.com/oxc-project/oxc/releases) - [Changelog](https://github.com/oxc-project/oxc/blob/main/CHANGELOG.md) - [Commits](https://github.com/oxc-project/oxc/commits/oxlint_v1.85.0/npm/oxlint-plugins) Updates `oxfmt` from 0.68.0 to 0.70.0 - [Release notes](https://github.com/oxc-project/oxc/releases) - [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxfmt/CHANGELOG.md) - [Commits](https://github.com/oxc-project/oxc/commits/oxfmt_v0.70.0/npm/oxfmt) Updates `oxlint` from 1.83.0 to 1.85.0 - [Release notes](https://github.com/oxc-project/oxc/releases) - [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxlint/CHANGELOG.md) - [Commits](https://github.com/oxc-project/oxc/commits/oxlint_v1.85.0/npm/oxlint) Updates `oxlint-plugin-eslint` from 1.83.0 to 1.85.0 - [Release notes](https://github.com/oxc-project/oxc/releases) - [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxlint-plugin-eslint/CHANGELOG.md) - [Commits](https://github.com/oxc-project/oxc/commits/oxlint_v1.85.0/npm/oxlint-plugin-eslint) --- updated-dependencies: - dependency-name: "@oxlint/plugins" dependency-version: 1.85.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: oxc - dependency-name: oxc-parser dependency-version: 0.151.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: oxc - dependency-name: oxfmt dependency-version: 0.70.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: oxc - dependency-name: oxlint dependency-version: 1.85.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: oxc - dependency-name: oxlint-plugin-eslint dependency-version: 1.85.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: oxc ... Signed-off-by: dependabot[bot] <support@github.com> * chore: disable unicorn rules that overlaps with oxc native one * style: fix no-unnecessary-boolean-literal-compare * style: fix no-unnecessary-type-conversion * style: add all oxc/* correctness rules --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Tony <TonyRL@users.noreply.github.com>
* feat(route): add Rockstar Games Newswire * fix(route/rockstargames): address review comments
* feat(route): add PetaPixel The official feed only carries excerpts. Reads the WordPress REST API and returns full posts with all images (largest srcset candidate), author and categories, optionally filtered by topic. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix(route/petapixel): use toSorted when picking the largest srcset candidate Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix(route/petapixel): drop the radar target so the optional category is honoured Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix(route/petapixel): strip lazy-loading attributes from embedded iframes too Readers that never trigger lazy loading show an empty box where the embed should be, the same way they do for images. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat(route): add PetaPixel — address review Drops the Array.isArray guards on the top-level responses and the explicit accept header; this host serves JSON with browser-like headers too. Image handling keeps picking the largest srcset candidate, and only the attributes describing the variant it replaced are removed. Adds a guard the route did need: when an _embed sub-request fails WordPress inlines an error object in place of the term list, which this site now does for tags, and the category mapping threw on it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017gmEyEJ8ufxFDtbwMCXNiL * feat(route): add PetaPixel — drop decodeHTML The middleware already runs decodeXML on the feed and item titles, and WordPress only emits numeric entities there. PetaPixel posts only carry categories, none of which contains an entity. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017gmEyEJ8ufxFDtbwMCXNiL --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…t silent guest-mode degradation (#23165) Co-authored-by: cloneselfish-wq <cloneselfish-wq@users.noreply.github.com>
X serves the SearchTimeline GraphQL operation over POST only and answers GET with a bare 404 and an empty body, which makes /twitter/keyword fail even though the resolved query ID is correct. Verified against the X API with a valid auth_token cookie: a GET request using the query ID and the 40 featureSwitches read from the current web bundle still returns 404 on x.com, api.x.com, twitter.com and api.twitter.com, while the same request sent as POST returns 200. twitterGot now accepts an optional method/queryId, moving the parameters into a JSON body when POST is requested. paginationTweets uses it for the operations in POST_ENDPOINTS, currently only SearchTimeline; every other operation keeps using GET since they still work that way. Co-authored-by: Geunho Bang <gh.bang@vinucommerce.com>
…gh untouched (#23136) tunnel-agent (used by request / request-promise, e.g. instagram-private-api with IG_PROXY) sends a CONNECT request with legacy options whose path is the tunnel target authority (host:port), not a URL path. Rebuilding a URL from those options produced http://127.0.0.1i.instagram.com:443/ and node then resolved that bogus hostname (ENOTFOUND). Hand CONNECT requests to node as-is: they cannot be turned into a URL, and UA/referer/proxy-agent injection does not apply to a proxy handshake. Fixes #16970
* fix(utils): parse abbreviated relative date units YouTube serves a compact metadata variant to some sessions, where a video published a year ago reads `1y ago` instead of `1 year ago`. Neither `y`, `w` nor `mo` was recognised, so those strings fell through to the plain Day.js parse and came back as `Invalid Date`. `mo` needs a lookahead on the minutes pattern too: the bare `m` matched the `mo` of a month, so `11 months ago` resolved to eleven months *and* eleven minutes ago, and `3mo ago` to three minutes ago. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * feat(route/youtube): add live streams `/youtube/live` searches for ongoing broadcasts through the Data API, so there is no way to follow a channel's schedule or its past streams. Read the channel's Live tab instead, which lists all three, and let the route params pick which of them end up in the feed. No API key needed. A stream is classified by its thumbnail badge: an ongoing one carries a `LIVE` badge and a scheduled one an `Upcoming` badge. The absence of a duration badge is deliberately not used as the signal, because YouTube groups durations past a thousand hours, e.g. `20,772:51:34` — the same reason the duration attachment now strips separators before summing. Scheduled streams have no publish date, so they take the time they are scheduled for. YouTube renders it in the time zone youtubei.js reports, which is the local one, hence the plain local parse. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * test(utils): hoist parse-date test helper to module scope `p` captured nothing from the `describe` scope, which tripped `unicorn/consistent-function-scoping`. Moving it out also lets its parameters be derived from `parseRelativeDate` instead of `any[]`. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * feat(route/youtube): add stream descriptions The lockups on the Live tab carry only a title, so every item in `/youtube/streams` had an empty body. Add `includeDescription`, which fills it from the player response. That is one request per stream, hence a default of false and only the streams that survive the state filter being fetched. A stream can be unplayable, e.g. a members-only one, so a failed lookup falls back to an empty description instead of taking the whole feed down. The cached value is wrapped in an object because an empty string comes back out of `cache.tryGet` as a literal `""`, and its expiration is deliberately not renewed on a hit, so an edited description still reaches a feed that is polled steadily. `isIncluded` becomes `isEnabled` to give the new parameter a default of false while the `include*` ones keep parsing exactly as before. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * feat(route/youtube): categorize streams instead of filtering them The `includeLive` / `includeUpcoming` / `includeCompleted` route params reimplemented, per route, what the common `filter_category` params already do. Drop them and expose the state that drove them as the item category, so `/youtube/streams/@GawrGura?filterout_category=completed` replaces `/youtube/streams/@GawrGura/includeCompleted=false`. The category lives in `getStreamsByChannelId` rather than in the shared `lockupViewToItem`, which also serves the Videos tab and playlists where an uploaded video is not a `completed` stream. With the filtering gone, `allowEmpty` goes too. It only ever covered a feed emptied by those params: a channel that has never streamed has no Live tab at all, so `getLiveStreams()` throws rather than returning nothing, and the empty check runs before the `filter_category` pass. An empty list now means the lockup parsing broke, which should surface. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
The site publishes an Atom feed at /feed/all/, but every entry is truncated to a 128 character summary and none of them carry category tags. This route consumes that feed and enriches it: - Full text: the body is fetched from `article.article > div.body` on each detail page, which is 3x to 659x the length of the published summary. - Categories: tags are extracted from `#tags a` on the detail page. Measured against the 20 entries currently in the feed: all 20 have a unique link, a pubDate and an author; 17 have at least one tag.
* fix(route/zhihu): fill missing daily publication dates * fix(route/zhihu): avoid timezone import failure
sortRoutes returned 0 whenever two paths had the same segment kinds up to
the shorter length, e.g. `/articles` vs `/radios/:category?`, or the empty
path `''` vs any path. That tie relation is not transitive, so toSorted
could register a literal route after a param route that matches it,
depending on the module import order:
- /sehuatang/user/:uid was served by /sehuatang/:subforumid?/:type?
- /gcores/radios/preview was served by /gcores/radios/:category?
Compare paths lexicographically by segment rank (literal < regex param <
plain param). When one path runs out of segments, it goes first unless it
ends with a regex param, which may span several segments, so
/discuz/:link{.+} still comes after the longer discuz paths.
Close #18335
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…23397) `@/utils/got` has been an ofetch-based imitation of got since e5a9fd4. Its responses only carry `data` and `body`, so reading `response.headers` throws `TypeError: Cannot read properties of undefined`. Switch the call sites that read response headers to `ofetch.raw()` and read them through the Fetch `Headers` API (`getSetCookie()` / `get()`), using `_data` for the body. - Pass `redirect: 'manual'` where the code relied on got's `followRedirect: false` (trow, informs, nhentai login), which the fake got ignored - Force `responseType: 'json'` for the 163 playlist API, which responds with `text/plain` - github/contributors: pagination through the `link` header works again instead of silently returning only the first page Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* feat(core): prefer HTTP/2 * feat(fetch): add allowH2 option to control HTTP/2 usage in ofetch
…lready has (#23406) About 70% of posts open with the featured image inside the body as img.wp-image-<featured_media>, so prepending it showed the same picture twice. Only prepend it when the body doesn't contain it. Claude-Session: https://claude.ai/code/session_017gmEyEJ8ufxFDtbwMCXNiL Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* feat(route/deepseek): add changelog route * fix(route/deepseek): clean changelog titles and preserve headings * feat(route/deepseek): inline single-use constants and helper * fix(route/deepseek): remove orphan changelog test
Refs #17684 Railway deployment still needs a platform test environment.
Bumps the hono group with 1 update: [@scalar/hono-api-reference](https://github.com/scalar/scalar/tree/HEAD/integrations/hono). Updates `@scalar/hono-api-reference` from 0.12.9 to 0.12.10 - [Release notes](https://github.com/scalar/scalar/releases) - [Changelog](https://github.com/scalar/scalar/blob/main/integrations/hono/CHANGELOG.md) - [Commits](https://github.com/scalar/scalar/commits/HEAD/integrations/hono) --- updated-dependencies: - dependency-name: "@scalar/hono-api-reference" dependency-version: 0.12.10 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: hono ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
#23535) Bumps the nix group with 1 update: [nixpkgs](https://github.com/NixOS/nixpkgs). Updates `nixpkgs` from `a7868a7` to `494ce7f` - [Commits](NixOS/nixpkgs@a7868a7...494ce7f) --- updated-dependencies: - dependency-name: nixpkgs dependency-version: 494ce7fd23ff6a5dff39e1fb11e9b6f2ac74bf25 dependency-type: direct:production dependency-group: nix ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the cloudflare group with 1 update: [@cloudflare/workers-types](https://github.com/cloudflare/workerd). Updates `@cloudflare/workers-types` from 5.20261005.1 to 5.20261006.1 - [Release notes](https://github.com/cloudflare/workerd/releases) - [Changelog](https://github.com/cloudflare/workerd/blob/main/RELEASE.md) - [Commits](https://github.com/cloudflare/workerd/commits) --- updated-dependencies: - dependency-name: "@cloudflare/workers-types" dependency-version: 5.20261006.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: cloudflare ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
) Bumps the typescript-eslint group with 2 updates: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) and [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser). Updates `@typescript-eslint/eslint-plugin` from 8.71.0 to 8.71.1 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.71.1/packages/eslint-plugin) Updates `@typescript-eslint/parser` from 8.71.0 to 8.71.1 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.71.1/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-version: 8.71.1 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: typescript-eslint - dependency-name: "@typescript-eslint/parser" dependency-version: 8.71.1 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: typescript-eslint ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…3532) Bumps the oxc group with 6 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@oxc-parser/binding-wasm32-wasip1](https://github.com/oxc-project/oxc/tree/HEAD/napi/parser) | `0.152.0` | `0.153.0` | | [oxc-parser](https://github.com/oxc-project/oxc/tree/HEAD/napi/parser) | `0.152.0` | `0.153.0` | | [@oxlint/plugins](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint-plugins) | `1.86.0` | `1.87.0` | | [oxfmt](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxfmt) | `0.71.0` | `0.72.0` | | [oxlint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint) | `1.86.0` | `1.87.0` | | [oxlint-plugin-eslint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint-plugin-eslint) | `1.86.0` | `1.87.0` | Updates `@oxc-parser/binding-wasm32-wasip1` from 0.152.0 to 0.153.0 - [Release notes](https://github.com/oxc-project/oxc/releases) - [Changelog](https://github.com/oxc-project/oxc/blob/main/napi/parser/CHANGELOG.md) - [Commits](https://github.com/oxc-project/oxc/commits/crates_v0.153.0/napi/parser) Updates `oxc-parser` from 0.152.0 to 0.153.0 - [Release notes](https://github.com/oxc-project/oxc/releases) - [Changelog](https://github.com/oxc-project/oxc/blob/main/napi/parser/CHANGELOG.md) - [Commits](https://github.com/oxc-project/oxc/commits/crates_v0.153.0/napi/parser) Updates `@oxlint/plugins` from 1.86.0 to 1.87.0 - [Release notes](https://github.com/oxc-project/oxc/releases) - [Changelog](https://github.com/oxc-project/oxc/blob/main/CHANGELOG.md) - [Commits](https://github.com/oxc-project/oxc/commits/oxlint_v1.87.0/npm/oxlint-plugins) Updates `oxfmt` from 0.71.0 to 0.72.0 - [Release notes](https://github.com/oxc-project/oxc/releases) - [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxfmt/CHANGELOG.md) - [Commits](https://github.com/oxc-project/oxc/commits/oxfmt_v0.72.0/npm/oxfmt) Updates `oxlint` from 1.86.0 to 1.87.0 - [Release notes](https://github.com/oxc-project/oxc/releases) - [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxlint/CHANGELOG.md) - [Commits](https://github.com/oxc-project/oxc/commits/oxlint_v1.87.0/npm/oxlint) Updates `oxlint-plugin-eslint` from 1.86.0 to 1.87.0 - [Release notes](https://github.com/oxc-project/oxc/releases) - [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxlint-plugin-eslint/CHANGELOG.md) - [Commits](https://github.com/oxc-project/oxc/commits/oxlint_v1.87.0/npm/oxlint-plugin-eslint) --- updated-dependencies: - dependency-name: "@oxc-parser/binding-wasm32-wasip1" dependency-version: 0.153.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: oxc - dependency-name: "@oxlint/plugins" dependency-version: 1.87.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: oxc - dependency-name: oxc-parser dependency-version: 0.153.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: oxc - dependency-name: oxfmt dependency-version: 0.72.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: oxc - dependency-name: oxlint dependency-version: 1.87.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: oxc - dependency-name: oxlint-plugin-eslint dependency-version: 1.87.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: oxc ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )