| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
updateCapability() ran inferTier() unconditionally after every request, which overwrites the authoritative tier set by GetUserStatus / refreshCredits. When a Pro or 14-day Trial account called a non-premium model such as gemini-2.5-flash or gpt-4o-mini, inferTier() saw only that ok=true and returned 'free', so the dashboard showed the account as FREE right after a successful request. probeAccount() already worked around this by restoring status.tierName at the end, but the chat handler path (handlers/chat.js) had no such restore, so every real API call silently demoted the tier. Skip the inferTier() fallback when an authoritative source is present (userStatusLastFetched > 0, or tierManual=true). The fallback still runs for brand-new accounts that have never been probed.
|
已合并。修复了 chat 路径每次调用后 inferTier 把 Pro/Trial 降级为 free 的问题——根因抓得很准。感谢 @aict666 🎯 |
Sorry, something went wrong.
The Pages site at dwgx.github.io/WindsurfAPI/ had only 4 names listed in the footer (dd373156, colin1112a, motto1, youfak). 8 contributors were missing from the public site even though most of them landed S+/S level fixes (aict666 #44/#51/#53/#54, baily-zhang #36/#45/#61, smeinecke #43, abwuge #58). Adds a dedicated `#contributors` section before the footer with one card per contributor: avatar, GitHub link, weight badge (S+/S/A+/A/B+), PR list, and a one-paragraph 繁體中文 description of what each fix actually solved. Cards reuse the existing panel-card warm/coral palette to fit the site's aesthetic. Footer one-liner is also expanded to all 8 names ordered by weight, with a "完整名單 ↑" anchor back to the new section. CSS additions: contrib-grid, contrib-card, contrib-avatar, contrib-weight + 5 weight-tier classes (-S-plus, -S, -A-plus, -A, -B-plus). All gradient/hover behaviour matches the existing panel-card styling.
修复了一个实际影响用户体验的 tier 降级 bug。updateCapability 在每次 chat 后调 inferTier 会把 Pro/Trial 降为 free,现在有 userStatus 的账号跳过推断。感谢 @aict666 的精准定位。
The Pages site at dwgx.github.io/WindsurfAPI/ had only 4 names listed in the footer (dd373156, colin1112a, motto1, youfak). 8 contributors were missing from the public site even though most of them landed S+/S level fixes (aict666 dwgx#44/dwgx#51/dwgx#53/dwgx#54, baily-zhang dwgx#36/dwgx#45/dwgx#61, smeinecke dwgx#43, abwuge dwgx#58). Adds a dedicated `#contributors` section before the footer with one card per contributor: avatar, GitHub link, weight badge (S+/S/A+/A/B+), PR list, and a one-paragraph 繁體中文 description of what each fix actually solved. Cards reuse the existing panel-card warm/coral palette to fit the site's aesthetic. Footer one-liner is also expanded to all 8 names ordered by weight, with a "完整名單 ↑" anchor back to the new section. CSS additions: contrib-grid, contrib-card, contrib-avatar, contrib-weight + 5 weight-tier classes (-S-plus, -S, -A-plus, -A, -B-plus). All gradient/hover behaviour matches the existing panel-card styling.
The Pages site at dwgx.github.io/WindsurfAPI/ had only 4 names listed in the footer (dd373156, colin1112a, motto1, youfak). 8 contributors were missing from the public site even though most of them landed S+/S level fixes (aict666 #44/#51/#53/#54, baily-zhang #36/#45/#61, smeinecke #43, abwuge #58). Adds a dedicated `#contributors` section before the footer with one card per contributor: avatar, GitHub link, weight badge (S+/S/A+/A/B+), PR list, and a one-paragraph 繁體中文 description of what each fix actually solved. Cards reuse the existing panel-card warm/coral palette to fit the site's aesthetic. Footer one-liner is also expanded to all 8 names ordered by weight, with a "完整名單 ↑" anchor back to the new section. CSS additions: contrib-grid, contrib-card, contrib-avatar, contrib-weight + 5 weight-tier classes (-S-plus, -S, -A-plus, -A, -B-plus). All gradient/hover behaviour matches the existing panel-card styling.
Operational/navigation links updated to MYMDO/WindsurfAPI:
- package.json: homepage, repository.url, bugs.url
- install-ls.sh: OUR_RELEASE
- update.sh: RELEASE_URL
- docker-compose.yml: ghcr.io/mymdo/windsurf-api:latest (lowercased per GHCR)
- SECURITY.md: 2x security advisory URLs
- .github/ISSUE_TEMPLATE/config.yml: security advisory URL
- .github/workflows/release.yml: comment
- README.{md,en,ua,zh}.md: clone URLs, GitHub Pages catalog, Issues/PR CTAs
- docs/index.html: nav GitHub, hero CTA, deploy clone, contributors CTA, footer (GitHub/Releases/Issues/Security/READMEs/CONTRIBUTING)
- src/dashboard/index.html + index-sketch.html: Issue/PR CTA buttons, RELEASE_NOTES blob link
KEPT at dwgx (intentional):
- Historical PR references (PR dwgx#1, dwgx#13, dwgx#36, dwgx#43, dwgx#44, dwgx#45) — they exist only in dwgx/WindsurfAPI
- @dwgx profile link in footer (attribution)
- (c) 2026 dwgx (copyright attribution per MIT)
- package.json author field (original creator)
- bydwgx1337 brand strings in dashboard UI / server provider / version BRAND
- contributors.json (login + historical narrative)
- test fixtures and code comments referencing dwgx
- docs/releases/RELEASE_NOTES_*.md (historical archives)
修复了一个实际影响用户体验的 tier 降级 bug。updateCapability 在每次 chat 后调 inferTier 会把 Pro/Trial 降为 free,现在有 userStatus 的账号跳过推断。感谢 @aict666 的精准定位。
The Pages site at dwgx.github.io/WindsurfAPI/ had only 4 names listed in the footer (dd373156, colin1112a, motto1, youfak). 8 contributors were missing from the public site even though most of them landed S+/S level fixes (aict666 #44/#51/#53/#54, baily-zhang #36/#45/#61, smeinecke #43, abwuge #58). Adds a dedicated `#contributors` section before the footer with one card per contributor: avatar, GitHub link, weight badge (S+/S/A+/A/B+), PR list, and a one-paragraph 繁體中文 description of what each fix actually solved. Cards reuse the existing panel-card warm/coral palette to fit the site's aesthetic. Footer one-liner is also expanded to all 8 names ordered by weight, with a "完整名單 ↑" anchor back to the new section. CSS additions: contrib-grid, contrib-card, contrib-avatar, contrib-weight + 5 weight-tier classes (-S-plus, -S, -A-plus, -A, -B-plus). All gradient/hover behaviour matches the existing panel-card styling.
## 台账六条旧记录缺字段(既存,非本轮引入) PR #224–#229 缺 `mergedAt` 与 `title`,而 schema 是 8 个字段。**在 3d49657 上就缺**,不是这轮 造的。从 `gh pr view --json mergedAt,title` 取权威值补齐。 ## `mergedAt` 的时区口径:定在 UTC 并写下来 我给 #241 写的是 `2026-08-05`,而 GitHub 的 `merged_at` 是 `2026-08-04T21:16:36Z` —— 我用了 JST 日历日。查了既有条目才发现**惯例本身就不一致**:#230 的台账日期等于 UTC,而 #232/#233 写 07-29 而 GitHub 是 07-30(既不是 UTC 也不是 JST)。记忆文件里那句 `mergedAt(YYYY-MM-DD)` 也没写时区。 所以取 **GitHub 的 `merged_at`(UTC)** 作为口径,#241 改成 `2026-08-04`。 **没有回改 #232/#233** —— 那两条的来源我无法核实,改一个我不知道出处的记录不如留着并写明。 ## 首页会渲染出 "PR #54 · PR #54" `group.prs.slice(0,4).map(prLabel).join(' · ')` 对同一个 `pr` 号的两条记录会输出两次。 aict666(#54)与 baily-zhang(#61)各有一条"累计"条目 + 一条单次条目共用同一个号。 **在渲染侧去重,不动 contributors.json** —— 那个双条目可能是刻意的(一条总结 + 一条单次), 而显示缺陷可以在不判断那件事的前提下修掉。顺带让第四格露出一个真实的 PR: aict666 PR #54 · PR #54 · PR #53 · PR #51 → PR #54 · PR #53 · PR #51 · PR #44 baily-zhang PR #64 · PR #62 · PR #61 · PR #61 → PR #64 · PR #62 · PR #61 · PR #45 `docs/index.html` 被 README 标为 "Generated output",核过了:生成器(`gen-docs-models.js`) 只就地重写其中的 `MODELS` 数组,`prLabel` 这段不是生成的。 ## 两个 README 说面板显示"同样的信息",实际是超集 README 列 17 个 login,台账 27 个 / 53 条,且面板每条还带分级与机制说明。改成如实说 "面板是更完整的一份,上面这份是人工挑选的子集",并写出当前数字。
修复了一个实际影响用户体验的 tier 降级 bug。updateCapability 在每次 chat 后调 inferTier 会把 Pro/Trial 降为 free,现在有 userStatus 的账号跳过推断。感谢 @aict666 的精准定位。
The Pages site at dwgx.github.io/WindsurfAPI/ had only 4 names listed in the footer (dd373156, colin1112a, motto1, youfak). 8 contributors were missing from the public site even though most of them landed S+/S level fixes (aict666 dwgx#44/dwgx#51/dwgx#53/dwgx#54, baily-zhang dwgx#36/dwgx#45/dwgx#61, smeinecke dwgx#43, abwuge dwgx#58). Adds a dedicated `#contributors` section before the footer with one card per contributor: avatar, GitHub link, weight badge (S+/S/A+/A/B+), PR list, and a one-paragraph 繁體中文 description of what each fix actually solved. Cards reuse the existing panel-card warm/coral palette to fit the site's aesthetic. Footer one-liner is also expanded to all 8 names ordered by weight, with a "完整名單 ↑" anchor back to the new section. CSS additions: contrib-grid, contrib-card, contrib-avatar, contrib-weight + 5 weight-tier classes (-S-plus, -S, -A-plus, -A, -B-plus). All gradient/hover behaviour matches the existing panel-card styling.
修复了一个实际影响用户体验的 tier 降级 bug。updateCapability 在每次 chat 后调 inferTier 会把 Pro/Trial 降为 free,现在有 userStatus 的账号跳过推断。感谢 @aict666 的精准定位。
The Pages site at dwgx.github.io/WindsurfAPI/ had only 4 names listed in the footer (dd373156, colin1112a, motto1, youfak). 8 contributors were missing from the public site even though most of them landed S+/S level fixes (aict666 dwgx#44/dwgx#51/dwgx#53/dwgx#54, baily-zhang dwgx#36/dwgx#45/dwgx#61, smeinecke dwgx#43, abwuge dwgx#58). Adds a dedicated `#contributors` section before the footer with one card per contributor: avatar, GitHub link, weight badge (S+/S/A+/A/B+), PR list, and a one-paragraph 繁體中文 description of what each fix actually solved. Cards reuse the existing panel-card warm/coral palette to fit the site's aesthetic. Footer one-liner is also expanded to all 8 names ordered by weight, with a "完整名單 ↑" anchor back to the new section. CSS additions: contrib-grid, contrib-card, contrib-avatar, contrib-weight + 5 weight-tier classes (-S-plus, -S, -A-plus, -A, -B-plus). All gradient/hover behaviour matches the existing panel-card styling.
| Back | FazBrowse Home | New Git URL |
Problem
After any successful /v1/chat/completions call, the dashboard shows the
account tier as FREE even for Pro / 14-day Trial accounts (e.g. screenshot
where planName is Trial but the tier badge renders FREE).
Root cause
handlers/chat.js calls updateCapability(apiKey, modelKey, true, 'success')
after every successful request. updateCapability then runs
inferTier(account.capabilities) unconditionally and writes the result
back to account.tier.
inferTier only recognises claude-opus-4.6 / claude-sonnet-4.6 as Pro
evidence. If a Pro or Trial account calls a non-premium model such as
gemini-2.5-flash or gpt-4o-mini, inferTier sees ok=true on that model
and returns 'free', overwriting the authoritative tier that
GetUserStatus / refreshCredits had set.
probeAccount already works around this with a manual
account.tier = status.tierName restore at the end (see the existing
comment: "updateCapability rewrites tier via inferTier, so restore it
afterwards"), but the chat handler path has no such restore, so every real
API call silently demotes the tier.
Fix
Skip the inferTier fallback in updateCapability when an authoritative
tier source is present:
The fallback still runs for brand-new accounts that have never been probed,
so tier inference for those accounts is unchanged.
Test
After: tier remains pro.