Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
9177ed8
feat: report remodel recipe v3 facts
KagamiChan Jul 4, 2026
20a1d75
feat: add opt-in remodel debug recorder
KagamiChan Jul 4, 2026
9befa8c
feat: expose remodel recorder settings UI
KagamiChan Jul 4, 2026
af343c1
fix: type recorder settings as react component
KagamiChan Jul 4, 2026
4686cca
test: add recorder storybook preview
KagamiChan Jul 4, 2026
f9f7a8f
refactor: simplify recorder settings component
KagamiChan Jul 4, 2026
f7d1b15
refactor: write recorder settings in tsx
KagamiChan Jul 4, 2026
3fae4ae
perf: skip recorder storage reads for unrelated APIs
KagamiChan Jul 4, 2026
3e80609
fix: address recorder review follow-ups
KagamiChan Jul 4, 2026
354d4a5
fix: use decorators for recorder stories
KagamiChan Jul 4, 2026
6ee19eb
fix: align react bundling with plugin config
KagamiChan Jul 4, 2026
53f22a9
fix: address final recorder review nits
KagamiChan Jul 4, 2026
574ceb4
build: bundle reporters into plugin output
KagamiChan Jul 4, 2026
6b71da4
fix: export recorder settings for poi
KagamiChan Jul 4, 2026
9c072ef
feat: localize remodel recorder settings
KagamiChan Jul 4, 2026
1e12973
fix: harden remodel debug edge cases
KagamiChan Jul 4, 2026
6fa7c91
test: declare lodash for source tests
KagamiChan Jul 4, 2026
9fbb302
fix: deep copy recorder snapshots
KagamiChan Jul 4, 2026
35d20d6
fix: reject placeholder remodel item ids
KagamiChan Jul 4, 2026
a9dd98a
perf: avoid cloning records for settings count
KagamiChan Jul 4, 2026
12df214
fix: harden recorder notifications and stories
KagamiChan Jul 4, 2026
55e07e4
fix: read reporter version in unbundled tests
KagamiChan Jul 4, 2026
f459a89
fix: lazy load reporter globals
KagamiChan Jul 4, 2026
5db9c78
build: remove stale chunk output config
KagamiChan Jul 4, 2026
355dc47
fix: keep debug captures with partial context
KagamiChan Jul 4, 2026
c2b9f71
test: derive reporter version in harness
KagamiChan Jul 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ build/Release
node_modules

# Generated plugin build output
chunks/*.js
index.js
reporters/*.js
sentry.js
storybook-static
11 changes: 11 additions & 0 deletions .storybook/main.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import type { StorybookConfig } from '@storybook/react-vite'

const config: StorybookConfig = {
stories: ['../src/**/*.stories.@(ts|tsx)'],
framework: {
name: '@storybook/react-vite',
options: {},
},
}

export default config
14 changes: 14 additions & 0 deletions .storybook/preview.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import type { Preview } from '@storybook/react-vite'

const preview: Preview = {
parameters: {
controls: {
matchers: {
color: /(background|color)$/i,
date: /Date$/i,
},
},
},
}

export default preview
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,13 @@ Report ship creating info and drop info, and so on.

- `pnpm run lint` checks JavaScript and TypeScript sources.
- `pnpm run typecheck` runs TypeScript in strict mode.
- `pnpm run storybook` previews React plugin UI surfaces.
- `pnpm test` builds the plugin and runs the Vitest suite.

## Remodel debug recorder

For local remodel recipe validation, the plugin includes an opt-in in-memory recorder. It is off by default and only records the three Akashi remodel APIs.

Enable it from the plugin settings panel. The settings panel also shows the in-memory record count and provides `Export` and `Clear` actions.

Captures stay in memory and are not sent anywhere; allowlisted, sanitized data is written only when `Export` is clicked. Disable the setting after collecting the local validation data.
7 changes: 4 additions & 3 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,19 @@ import tseslint from 'typescript-eslint'
export default tseslint.config(
{
ignores: [
'chunks/**',
'coverage/**',
'index.js',
'node_modules/**',
'reporters/**',
'sentry.js',
'storybook-static/**',
],
},
js.configs.recommended,
...tseslint.configs.recommended,
importX.flatConfigs.recommended,
{
files: ['**/*.{js,cjs,mjs,ts}'],
files: ['**/*.{js,cjs,mjs,ts,tsx}'],
languageOptions: {
ecmaVersion: 2022,
sourceType: 'module',
Expand Down Expand Up @@ -60,6 +60,7 @@ export default tseslint.config(
js: 'never',
mjs: 'never',
ts: 'never',
tsx: 'never',
},
],
'import-x/no-unresolved': [
Expand All @@ -77,7 +78,7 @@ export default tseslint.config(
},
},
{
files: ['src/**/*.ts'],
files: ['src/**/*.{ts,tsx}'],
extends: [tseslint.configs.recommendedTypeChecked],
languageOptions: {
parserOptions: {
Expand Down
6 changes: 6 additions & 0 deletions i18n/en-US.json
Original file line number Diff line number Diff line change
@@ -1,2 +1,8 @@
{
"Captured records": "Captured records: {{count}}",
"Clear": "Clear",
"Enable remodel debug recorder": "Enable remodel debug recorder",
"Export": "Export",
"Remodel recipe debug recorder": "Remodel recipe debug recorder",
"Remodel recipe debug recorder description": "Opt-in local recorder for validating Akashi remodel API sequences. It captures only allowlisted remodel fields, keeps records in memory, and writes a file only when Export is clicked."
}
8 changes: 7 additions & 1 deletion i18n/ja-JP.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
{
"Data Report": "統計データベースツール",
"Report data to database(http://db.kcwiki.moe)": "統計データベース(http://db.kcwiki.moe)登録用ツール"
"Report data to database(http://db.kcwiki.moe)": "統計データベース(http://db.kcwiki.moe)登録用ツール",
"Captured records": "記録数: {{count}}",
"Clear": "クリア",
"Enable remodel debug recorder": "改修デバッグレコーダーを有効化",
"Export": "エクスポート",
"Remodel recipe debug recorder": "改修レシピデバッグレコーダー",
"Remodel recipe debug recorder description": "明石の改修APIシーケンス検証用のローカルレコーダーです。許可された改修フィールドだけをメモリ上に記録し、エクスポートをクリックしたときだけファイルへ書き出します。"
}
8 changes: 7 additions & 1 deletion i18n/zh-CN.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
{
"Data Report": "数据汇报",
"Report data to database(http://db.kcwiki.moe)": "汇报建造数据、海域掉落数据、开发数据"
"Report data to database(http://db.kcwiki.moe)": "汇报建造数据、海域掉落数据、开发数据",
"Captured records": "已捕获记录:{{count}}",
"Clear": "清空",
"Enable remodel debug recorder": "启用改修调试记录器",
"Export": "导出",
"Remodel recipe debug recorder": "改修配方调试记录器",
"Remodel recipe debug recorder description": "用于验证明石改修 API 顺序的本地可选记录器。只捕获允许的改修字段,记录仅保存在内存中,并且只会在点击导出时写入文件。"
}
8 changes: 7 additions & 1 deletion i18n/zh-TW.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
{
"Data Report": "數據匯報",
"Report data to database(http://db.kcwiki.moe)": "匯報建造數據、海域掉落數據、開發數據"
"Report data to database(http://db.kcwiki.moe)": "匯報建造數據、海域掉落數據、開發數據",
"Captured records": "已擷取記錄:{{count}}",
"Clear": "清除",
"Enable remodel debug recorder": "啟用改修除錯記錄器",
"Export": "匯出",
"Remodel recipe debug recorder": "改修配方除錯記錄器",
"Remodel recipe debug recorder description": "用於驗證明石改修 API 順序的本機選用記錄器。只擷取允許的改修欄位,記錄只保存在記憶體中,且只會在點擊匯出時寫入檔案。"
}
15 changes: 11 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,8 @@
"main": "index.js",
"packageManager": "pnpm@10.28.0",
"files": [
"chunks",
"i18n",
"index.js",
"reporters",
"sentry.js",
"package.json",
"README.md",
Comment thread
KagamiChan marked this conversation as resolved.
"LICENSE"
Expand All @@ -18,8 +15,10 @@
"build": "tsdown",
"lint": "eslint .",
"prepack": "tsdown",
"postpublish": "git clean -fd -- index.js sentry.js reporters chunks && git checkout .",
"postpublish": "git clean -fd -- index.js && git checkout .",
"smoke": "node scripts/smoke-load.cjs",
"storybook": "storybook dev -p 6006",
"storybook:build": "storybook build",
"test": "tsdown && vitest run",
"test:coverage": "tsdown && vitest run --coverage",
"typecheck": "tsc --noEmit",
Expand Down Expand Up @@ -51,9 +50,12 @@
"@commitlint/cli": "^8.2.0",
"@commitlint/config-conventional": "^8.2.0",
"@eslint/js": "^10.0.1",
"@storybook/react-vite": "^10.4.6",
"@types/lodash": "^4.17.21",
"@types/node": "^24.0.0",
"@types/node-fetch": "^2.6.13",
"@types/react": "^19.2.17",
"@types/react-dom": "^19.2.3",
"@types/semver": "^7.7.1",
"@vitest/coverage-v8": "^4.0.0",
"eslint": "^10.6.0",
Expand All @@ -65,7 +67,12 @@
"husky": "^3.0.8",
"kcsapi": "^1.260604.0",
"lint-staged": "^9.4.2",
"lodash": "^4.18.1",
"prettier": "^3.9.4",
"react": "^19.2.7",
"react-dom": "^19.2.7",
"react-i18next": "^17.0.8",
"storybook": "^10.4.6",
"tsdown": "^0.22.0",
"typescript": "^5.9.0",
"typescript-eslint": "^8.62.1",
Expand Down
Loading
Loading