LeetCode 83: Remove Duplicates from Sorted List の追加とマルチドメイン UI 改善#322
Conversation
✅ Deploy Preview for algorithm-datastructures-math-studies ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
📝 WalkthroughWalkthroughLeetCode問題83「ソート済みリストから重複を削除」に関する教材群(README、言語別実装、対話型React UI、公開HTML)を新規追加・同期し、Prism資産のvendoringやDebounceドキュメントのスレッド安全化、サイトインデックス更新を行いました。 Changes
Sequence Diagram(s)sequenceDiagram
participant User as User
participant Steps as StepsSection
participant Vis as NodeVis
participant Code as CodeTabs
User->>Steps: 操作(Play/Next/Prev/Reset)
Steps->>Vis: ノード状態更新要求 (current, skipped, highlights)
Vis-->>Steps: アニメーション完了イベント
Steps->>Code: 対応コード行をハイライト要求
Code-->>User: ハイライト済コードを描画
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 12
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
SQL/Leetcode/Intermediate Join/1164. Product Price at a Given Date/Claude Sonnet 4.5 Extended/Product_Price_at_a_Given_Date_pandas.md (1)
76-79:⚠️ Potential issue | 🟠 Majorドキュメントと実装の間に重大な不整合があります。
メイン実装(50行目)は
idxmax()からsort_values().groupby().tail(1)に変更されましたが、以下の箇所が古いidxmax()アプローチを参照しています:
- 76行目: 使用APIセクションが
idxmax()を説明- 83行目: 処理フローが「
idxmax()で各製品の最新変更日」と記載- 94行目: 計算量テーブルが「groupby + idxmax」と記載
- 108行目: フローチャートが「GroupBy product_id + idxmax」と記載
- 225行目: 別ファイル用の実装が依然として
idxmax()を使用これにより:
- ユーザーがドキュメントとコードの矛盾に混乱する
- 同ファイル内の2つの実装が、エッジケース(同日付の複数エントリ)で異なる結果を生成する可能性がある
🔄 推奨される修正
オプション1(推奨): メイン実装を元の
idxmax()に戻す(シンプルで高速)- # 同じ日付の場合は最新のインデックスを使用 - latest_idx = before_target.sort_values('change_date').groupby('product_id').tail(1).index + latest_idx = before_target.groupby('product_id')['change_date'].idxmax()オプション2: 新しいアプローチに合わせて全ドキュメントを更新し、225行目の実装も統一する
Also applies to: 83-86, 94-96, 108-108, 225-226
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@SQL/Leetcode/Intermediate` Join/1164. Product Price at a Given Date/Claude Sonnet 4.5 Extended/Product_Price_at_a_Given_Date_pandas.md around lines 76 - 79, The docs currently reference the old idxmax() approach while the main implementation uses sort_values().groupby().tail(1), causing inconsistency and potential differing results on same-date duplicates; either revert the main code back to using idxmax() or update all doc references and the alternate implementation to match the new sort_values().groupby().tail(1) approach—specifically change mentions in the "Usage/API" section, the "processing flow" that says "idxmax()で各製品の最新変更日", the complexity table that lists "groupby + idxmax", the flowchart text "GroupBy product_id + idxmax", and the separate implementation at the bottom (the one currently using idxmax()) so all references and code consistently use the chosen method (idxmax() or sort_values().groupby().tail(1)) and note how same-date duplicates are handled.JavaScript/2627. Debounce/Claude Code Sonnet 4.5 extended/README.md (1)
400-400:⚠️ Potential issue | 🟡 Minorドキュメントの更新が必要です。
この注意書きは、実装に
Lockが追加される前のものです。現在の実装(146行目と173行目)ではすでにLockを使用してスレッド安全性を確保しているため、このドキュメントは時代遅れになっています。ユーザーの混乱を避けるため、実装の現状を反映するように更新してください。
📝 推奨される修正
-**注意**: `threading.Timer` 自体はスレッドセーフだが、`nonlocal timer` への同時アクセスは保護されていない。本格的なマルチスレッド環境では `Lock` が必要。 +**注意**: この実装では `Lock` を使用して `nonlocal timer` への同時アクセスを保護しているため、マルチスレッド環境でも安全に使用できます。🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@JavaScript/2627`. Debounce/Claude Code Sonnet 4.5 extended/README.md at line 400, The README note saying "threading.Timer itself is thread-safe but simultaneous access to nonlocal timer is not protected; a Lock is required" is outdated; update this line to reflect the current implementation (see mentions at lines 146 and 173) which already uses a Lock to protect accesses to the shared timer. Replace or reword the sentence to state that threading.Timer remains thread-safe but the implementation uses a threading.Lock (or the lock variable name used in the code) to guard concurrent access to the timer/nonlocal state, or remove the caution entirely if you prefer to simply document that the implementation is thread-safe due to the Lock.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@Algorithm/Other/leetcode/83`. Remove Duplicates from Sorted List/Claude 4.6
extended/README_React.html:
- Line 727: The node highlighting is off by one because code passes
cur.highlight[0] while elsewhere using step - 1, causing a double 0-based shift;
fix by making the NodeVis highlight input and callers consistent — either pass
the full cur.highlight array everywhere or pass the single index but remove the
extra -1 usage (i.e., stop applying step - 1 when you already use
cur.highlight[0]), and update references to stepsData.highlight and the callers
of NodeVis so all use the same 0-based indexing (adjust the call sites using
cur.highlight[0] and the places using step - 1 so they align).
In `@Algorithm/Other/leetcode/83`. Remove Duplicates from Sorted List/Claude 4.6
extended/README.md:
- Around line 3-13: The README's table of contents must be reorganized to the
project's 5-section convention: create top-level sections named Overview,
Algorithm, Complexity, Implementation, and Optimization; move "TL;DR", "図解",
"正しさのスケッチ", and "FAQ" under the Algorithm section, place "Python 実装" and
"エッジケースと検証観点" under Implementation, and move "CPython 最適化ポイント" under
Optimization; update the TOC headings and anchor links accordingly so the
top-level order becomes Overview / Algorithm / Complexity / Implementation /
Optimization.
In `@Algorithm/Other/leetcode/83`. Remove Duplicates from Sorted List/Claude 4.6
extended/Remove_Duplicates_from_Sorted_List_Rust.md:
- Around line 98-100: ガード節で matches!(head, ...) が head をムーブしてしまい、その後の
head.as_mut() や return head が使えなくなっているので、値マッチではなく借用で判定するよう修正してください — 具体的には head
をムブルートにしないために matches! を使わずに head.as_ref() や head.as_mut().map_or(...)、または if
head.is_none() || head.as_ref().unwrap().next.is_none()
のような借用ベースのチェックに置き換え、関数内でそのまま head: Option<Box<ListNode>> を返す処理(head.as_mut()
を使うループや参照更新)に影響を出さないようにしてください。
In `@JavaScript/2627`. Debounce/Claude Code Sonnet 4.5 extended/README.md:
- Line 198: Remove the in-class import "from threading import Timer, Lock" and
rely on the module-level import instead; locate the class where Timer and Lock
are being imported inside the class body and delete that line so Timer and Lock
are only imported at the top of the module (ensuring the existing module-level
import that provides Timer and Lock remains present).
- Around line 336-340: The current debounce block holds self.lock while calling
self.timer.start(), prolonging the lock; instead, inside the with self.lock:
cancel the old timer, create the new Timer instance and assign it to a local
variable and to self.timer, then exit the lock and call local_timer.start()
outside the lock; reference symbols: self.lock, self.timer.cancel(),
Timer(self.t / 1000.0, self.fn, args, kwargs), self.timer, and
self.timer.start()—ensure you use a local variable (e.g., local_timer) so the
started timer matches the stored self.timer.
- Around line 178-186: Move the Timer.start() call out of the critical section
to minimize lock hold time: inside the with lock: block, cancel the existing
timer if present and create/assign the new Timer object to the shared variable
(timer = Timer(t / 1000.0, fn, args=args, kwargs=kwargs)) but do not call
timer.start() there; capture the newly assigned Timer in a local variable and
call local_timer.start() after exiting the with lock: block. Ensure you still
cancel the previous timer under the same lock so assignment and cancellation
remain atomic for the shared timer variable.
- Around line 214-222: The code currently creates and starts the Timer while
holding the lock (inside the "with lock:" block); instead, create the Timer and
assign it to the shared variable (timer = Timer(...)) while holding the lock,
then exit the lock and call timer.start() to minimize lock hold time;
specifically, in the block using "with lock:", cancel any existing timer and set
timer = Timer(t / 1000.0, fn, args=args, kwargs=kwargs), then after leaving the
with-lock scope call timer.start() (or store the new timer to a local var inside
the lock and start that local var outside) to avoid starting the thread while
the lock is held.
In `@public/Algorithm/Other/leetcode/83`. Remove Duplicates from Sorted
List/Claude 4.6 extended/README_React.html:
- Around line 736-741: The duplicated nodes marked with n.skip are not advancing
the x coordinate so subsequent normal nodes draw over them; update the
xPositions computation used for rendering (the block using allNodes.forEach with
x, xPositions, BOX, GAP, ARR) so that skipped nodes are assigned a separate
offset (e.g., add a SKIP_OFFSET or reserve space) instead of reusing the same x
value—ensure x is incremented for skipped nodes or give them a distinct
xPositions entry so their "cancellation" drawing doesn't get overwritten by
later nodes.
- Line 662: stepsData は 0 始まりなのに highlight に 1 始まりの単一値を渡しているためステップ強調がずれています。該当する
highlight プロパティ(例: highlight: 1 や highlight: [1] のような箇所)を 0
ベースのインデックス配列に直す(単一値なら値を -1 して配列化、複数指定ならすべて -1 して配列にする)か、レンダラー側で highlight
を受け取る箇所(stepsData を参照するコード)に 1→0 変換ロジックを入れて正しいインデックスを使うように修正してください。該当シンボル:
highlight と stepsData(同様修正は他の類似箇所にも適用)。
- Around line 1217-1243: Wrap the button group in a container with
role="tablist" and give each button role="tab", aria-selected={tab===key},
id={`${key}-tab`} and aria-controls={`${key}-panel`} so screen readers know
which tab is active; when a tab is clicked call setTab(key) as you already do.
Give the content panel role="tabpanel", id={`${tab}-panel`} and
aria-labelledby={`${tab}-tab`} (use the current tab value to render the matching
panel) and ensure the panel is present/hidden only for the active tab.
Optionally add a keyboard handler on the buttons (onKeyDown) to support
ArrowLeft/ArrowRight to move focus and activate adjacent tabs, referencing
setTab, tab, codeData, and the tab buttons/panel ids above.
In `@SQL/Leetcode/Intermediate` Join/1164. Product Price at a Given Date/Claude
Sonnet 4.5 Extended/Product_Price_at_a_Given_Date_pandas.md:
- Around line 49-50: Replace the O(N log N) approach using
before_target.sort_values('change_date').groupby('product_id').tail(1) with the
original O(N) groupby + idxmax on 'change_date' (e.g., use
before_target.groupby('product_id')['change_date'].idxmax() to get latest_idx),
keeping in mind idxmax returns the first index for ties which is acceptable;
also update the complexity table that currently claims "groupby + idxmax is
O(N)" to match the restored implementation if needed.
- Around line 49-50: コメントが実装と合っていません。`latest_idx =
before_target.sort_values('change_date').groupby('product_id').tail(1).index`
は「同じ日付の場合は最新のインデックスを使用」と保証するものではないため、コメントを正確に修正するか、決定論的に最後の行を選ぶように実装を変更してください(例:
sort_values(['change_date', '<tiebreaker_col_or_index>'])
で明示的にタイブレーカーを指定するか、明示的に最後の行を選ぶ処理に置き換える)。対象シンボル: latest_idx, before_target,
change_date, product_id, sort_values(...).groupby(...).tail(1).
---
Outside diff comments:
In `@JavaScript/2627`. Debounce/Claude Code Sonnet 4.5 extended/README.md:
- Line 400: The README note saying "threading.Timer itself is thread-safe but
simultaneous access to nonlocal timer is not protected; a Lock is required" is
outdated; update this line to reflect the current implementation (see mentions
at lines 146 and 173) which already uses a Lock to protect accesses to the
shared timer. Replace or reword the sentence to state that threading.Timer
remains thread-safe but the implementation uses a threading.Lock (or the lock
variable name used in the code) to guard concurrent access to the timer/nonlocal
state, or remove the caution entirely if you prefer to simply document that the
implementation is thread-safe due to the Lock.
In `@SQL/Leetcode/Intermediate` Join/1164. Product Price at a Given Date/Claude
Sonnet 4.5 Extended/Product_Price_at_a_Given_Date_pandas.md:
- Around line 76-79: The docs currently reference the old idxmax() approach
while the main implementation uses sort_values().groupby().tail(1), causing
inconsistency and potential differing results on same-date duplicates; either
revert the main code back to using idxmax() or update all doc references and the
alternate implementation to match the new sort_values().groupby().tail(1)
approach—specifically change mentions in the "Usage/API" section, the
"processing flow" that says "idxmax()で各製品の最新変更日", the complexity table that
lists "groupby + idxmax", the flowchart text "GroupBy product_id + idxmax", and
the separate implementation at the bottom (the one currently using idxmax()) so
all references and code consistently use the chosen method (idxmax() or
sort_values().groupby().tail(1)) and note how same-date duplicates are handled.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 84d5a144-fa37-4db2-81e7-9b8d00979df8
📒 Files selected for processing (13)
Algorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/README.mdAlgorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/README_React.htmlAlgorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/Remove_Duplicates_from_Sorted_List_Python.mdAlgorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/Remove_Duplicates_from_Sorted_List_Rust.mdAlgorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/Remove_Duplicates_from_Sorted_List_Typescript.mdJavaScript/2627. Debounce/Claude Code Sonnet 4.5 extended/README.mdSQL/Leetcode/Intermediate Join/1164. Product Price at a Given Date/Claude Sonnet 4.5 Extended/Product_Price_at_a_Given_Date.htmlSQL/Leetcode/Intermediate Join/1164. Product Price at a Given Date/Claude Sonnet 4.5 Extended/Product_Price_at_a_Given_Date_pandas.mdSQL/Leetcode/Intermediate Select/1174. Immediate Food Delivery II/Claude Sonnet 4.5 Extended/Immediate_Food_Delivery_II.htmlpublic/Algorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/README_React.htmlpublic/SQL/Leetcode/Intermediate Join/1164. Product Price at a Given Date/Claude Sonnet 4.5 Extended/Product_Price_at_a_Given_Date.htmlpublic/SQL/Leetcode/Intermediate Select/1174. Immediate Food Delivery II/Claude Sonnet 4.5 Extended/Immediate_Food_Delivery_II.htmlpublic/index.html
…y, and optimize SQL/JS solutions
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
JavaScript/2627. Debounce/Claude Code Sonnet 4.5 extended/README.md (1)
488-500: 🧹 Nitpick | 🔵 Trivialthrottle 例の一貫性とスレッドセーフ性について検討してください。
現在の実装は動作しますが、以下の点で改善の余地があります:
nonlocalの使用:last_call = [0.0]というリストパターンは古いスタイルです。debounce 実装と同様にnonlocalを使用すると一貫性が向上します。- スレッドセーフ性: debounce 実装は
Lockを使用していますが、この throttle 例にはありません。複数スレッドから呼び出される可能性を考慮し、注釈を追加するかLockを追加することを推奨します。♻️ 一貫性のための改善案
import time +from threading import Lock # throttle の例(参考) def throttle(fn: Callable, t: float) -> Callable: - last_call = [0.0] + last_call = 0.0 + lock = Lock() def throttled(*args, **kwargs): - now = time.time() - if now - last_call[0] >= t / 1000.0: - last_call[0] = now - fn(*args, **kwargs) + nonlocal last_call + with lock: + now = time.time() + if now - last_call >= t / 1000.0: + last_call = now + should_call = True + else: + should_call = False + + if should_call: + fn(*args, **kwargs) return throttled※ これは FAQ の例示コードであるため、必須ではありませんが、debounce 実装との一貫性向上のための提案です。
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@JavaScript/2627`. Debounce/Claude Code Sonnet 4.5 extended/README.md around lines 488 - 500, Update the throttle example to use nonlocal for last_call (instead of the list trick) and make it thread-safe by adding a threading.Lock used inside the inner throttled function; specifically modify the throttle(fn: Callable, t: float) function and its nested throttled(...) closure to declare nonlocal last_call, create a Lock, and acquire/release the lock (or use a context manager) around the time-check and update of last_call so concurrent calls from multiple threads are safe and consistent with the debounce example.
♻️ Duplicate comments (1)
public/Algorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/README_React.html (1)
1216-1244: 🧹 Nitpick | 🔵 Trivialコードタブにタブセマンティクスを追加することを推奨します。
スクリーンリーダーユーザーのために、
role="tablist"、role="tab"、aria-selected、aria-controls等の属性追加を検討してください。♿ 修正例
- <div className="flex gap-2 mb-4 flex-wrap"> + <div + className="flex gap-2 mb-4 flex-wrap" + role="tablist" + aria-label="実装言語" + > {Object.entries(codeData).map(([key, { label }]) => ( <button key={key} type="button" + role="tab" + aria-selected={tab === key} className={...}🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@public/Algorithm/Other/leetcode/83`. Remove Duplicates from Sorted List/Claude 4.6 extended/README_React.html around lines 1216 - 1244, The tab buttons and panels lack ARIA tab semantics; update the buttons mapping and the panel div to be accessible: add role="tablist" on the container wrapping the buttons, give each button role="tab", id={`tab-${key}`}, aria-selected={tab===key}, and aria-controls={`panel-${key}`}, and set the content container (the div with className="fade-slide") to role="tabpanel", id={`panel-${tab}`}, and aria-labelledby={`tab-${tab}`}; keep using codeData, tab, and setTab for state and ensure the id/aria-controls names match so screen readers can associate tabs with panels.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@SQL/Leetcode/Intermediate` Join/1164. Product Price at a Given Date/Claude
Sonnet 4.5 Extended/Product_Price_at_a_Given_Date_pandas.md:
- Line 223: ファイル末尾に改行が欠けているため、Markdown のベストプラクティスに従って
Product_Price_at_a_Given_Date_pandas.md の終端に単一の改行文字(空行)を追加し、保存してコミットしてください。
---
Outside diff comments:
In `@JavaScript/2627`. Debounce/Claude Code Sonnet 4.5 extended/README.md:
- Around line 488-500: Update the throttle example to use nonlocal for last_call
(instead of the list trick) and make it thread-safe by adding a threading.Lock
used inside the inner throttled function; specifically modify the throttle(fn:
Callable, t: float) function and its nested throttled(...) closure to declare
nonlocal last_call, create a Lock, and acquire/release the lock (or use a
context manager) around the time-check and update of last_call so concurrent
calls from multiple threads are safe and consistent with the debounce example.
---
Duplicate comments:
In `@public/Algorithm/Other/leetcode/83`. Remove Duplicates from Sorted
List/Claude 4.6 extended/README_React.html:
- Around line 1216-1244: The tab buttons and panels lack ARIA tab semantics;
update the buttons mapping and the panel div to be accessible: add
role="tablist" on the container wrapping the buttons, give each button
role="tab", id={`tab-${key}`}, aria-selected={tab===key}, and
aria-controls={`panel-${key}`}, and set the content container (the div with
className="fade-slide") to role="tabpanel", id={`panel-${tab}`}, and
aria-labelledby={`tab-${tab}`}; keep using codeData, tab, and setTab for state
and ensure the id/aria-controls names match so screen readers can associate tabs
with panels.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 1a890788-5680-4c5b-b188-0bd6dd2fc252
📒 Files selected for processing (6)
Algorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/README.mdAlgorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/README_React.htmlAlgorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/Remove_Duplicates_from_Sorted_List_Rust.mdJavaScript/2627. Debounce/Claude Code Sonnet 4.5 extended/README.mdSQL/Leetcode/Intermediate Join/1164. Product Price at a Given Date/Claude Sonnet 4.5 Extended/Product_Price_at_a_Given_Date_pandas.mdpublic/Algorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/README_React.html
- LeetCode 83: Add ARIA tab semantics to CodeTabs component in React visualizations - LeetCode 83: Fix NodeVis highlight zero-based indexing - JavaScript 2627 (Debounce): Fix timer creation to be outside lock and use nonlocal in throttle example - SQL 1164 (Product Price): Restore O(N) idxmax approach instead of sorting and add trailing newline
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@Algorithm/Other/leetcode/83`. Remove Duplicates from Sorted List/Claude 4.6
extended/README_React.html:
- Line 1233: The div with role="tablist" (className "flex gap-2 mb-4 flex-wrap")
lacks an accessible name; add an aria-label (e.g. aria-label="実装言語") or
aria-labelledby that points to a visible heading so screen readers know what the
tabs control, and apply the same change to the generated files under public/;
update the element with role="tablist" in the component that renders these tabs
(and any equivalent render in the public output) to include the chosen aria
attribute.
- Around line 997-1004: The Play button currently only sets isPlaying(true) but
doesn't reset the current step, so starting Play from the final step immediately
jumps to step 1 then stops; update the Play handler used by the button (the
onClick that calls setIsPlaying) to also reset the step index to the first step
(e.g. call the state updater used for the current step such as setCurrentStep(0)
or setStepIndex(0) before setting isPlaying(true)), and mirror the same change
in the public/ build copy; also ensure the useEffect playback logic respects
that starting from step 0 will advance through all steps.
In `@JavaScript/2627`. Debounce/Claude Code Sonnet 4.5 extended/README.md:
- Around line 500-505: The throttle() implementation currently calls fn(*args,
**kwargs) inside the with lock: block which can serialize calls or deadlock if
fn blocks or re-enters; change throttle so the locked section only performs the
time check and updates last_call (using last_call, lock inside throttle) and
sets a local flag/closure (e.g., should_call) and captured args to indicate
execution, then release the lock and call fn outside the lock; ensure you still
update last_call while locked and preserve the same function signature/behavior.
- Around line 300-302: The current check uses asyncio.iscoroutine(result) which
only detects coroutine objects and misses Task/Future/custom awaitables; update
the await check in the function that calls fn (the variables result and fn and
the check asyncio.iscoroutine) to use inspect.isawaitable(result) instead, and
add the necessary import for inspect so all awaitable types (Task, Future,
coroutine, custom awaitables) are properly awaited.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 4ea81943-1464-4ec1-87ec-ed18d4af6291
📒 Files selected for processing (4)
Algorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/README_React.htmlJavaScript/2627. Debounce/Claude Code Sonnet 4.5 extended/README.mdSQL/Leetcode/Intermediate Join/1164. Product Price at a Given Date/Claude Sonnet 4.5 Extended/Product_Price_at_a_Given_Date_pandas.mdpublic/Algorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/README_React.html
…entation refinements
There was a problem hiding this comment.
Actionable comments posted: 2
♻️ Duplicate comments (1)
Algorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/README_React.html (1)
1238-1261:⚠️ Potential issue | 🟡 Minor
tablistに accessible name を付けてください。
role="tablist"だけだと、スクリーンリーダーには何の切替 UI かが伝わりません。aria-labelかaria-labelledbyを追加してください。修正例
- <div className="flex gap-2 mb-4 flex-wrap" role="tablist"> + <div + className="flex gap-2 mb-4 flex-wrap" + role="tablist" + aria-label="実装言語" + >🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Algorithm/Other/leetcode/83`. Remove Duplicates from Sorted List/Claude 4.6 extended/README_React.html around lines 1238 - 1261, The tablist div (the element rendering the tabs in the map) needs an accessible name; update the div with role="tablist" to include either aria-label or aria-labelledby (e.g., aria-label="Code view tabs" or point to a visible heading id) so screen readers know what the control is; modify the JSX where the tabs are rendered (the div containing the Object.entries map and the button elements, which uses setTab, handleKeyDown and keys) to add the chosen aria attribute and ensure any referenced label element id exists.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@Algorithm/Other/leetcode/83`. Remove Duplicates from Sorted List/Claude 4.6
extended/README_React.html:
- Around line 734-740: The visualization advances xPositions for skipped nodes
but keeps the arrow endpoint offset fixed at ARR, so reconnect arrows (e.g.,
when performing current.next = nxt.next) don't reach the true next non-skip
node; update the arrow endpoint calculation to use the computed xPositions for
the target node rather than a fixed ARR offset. Locate where xPositions is used
to draw arrows (references: xPositions, allNodes, BOX, GAP, ARR, and the
reconnection step current.next = nxt.next) and replace the fixed ARR-based end
coordinate with the appropriate xPositions[indexOfTarget] (+ any box offset) so
the arrow spans to the actual next non-skip node.
In `@JavaScript/2627`. Debounce/Claude Code Sonnet 4.5 extended/README.md:
- Line 510: The Markdown code block closing is malformed: the trailing triple
backticks are appended to the line with "return throttled"; fix by placing the
closing ``` on its own line after the "return throttled" statement so the code
block is properly terminated (locate the line with "return throttled" and move
the three backticks to a separate line immediately following it).
---
Duplicate comments:
In `@Algorithm/Other/leetcode/83`. Remove Duplicates from Sorted List/Claude 4.6
extended/README_React.html:
- Around line 1238-1261: The tablist div (the element rendering the tabs in the
map) needs an accessible name; update the div with role="tablist" to include
either aria-label or aria-labelledby (e.g., aria-label="Code view tabs" or point
to a visible heading id) so screen readers know what the control is; modify the
JSX where the tabs are rendered (the div containing the Object.entries map and
the button elements, which uses setTab, handleKeyDown and keys) to add the
chosen aria attribute and ensure any referenced label element id exists.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 1de124f7-ab27-4c42-ac08-faa45fd37d54
📒 Files selected for processing (4)
Algorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/README.mdAlgorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/README_React.htmlJavaScript/2627. Debounce/Claude Code Sonnet 4.5 extended/README.mdpublic/Algorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/README_React.html
There was a problem hiding this comment.
Actionable comments posted: 2
♻️ Duplicate comments (2)
public/Algorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/README_React.html (1)
1240-1240:⚠️ Potential issue | 🟡 Minor
tablistに accessible name がありません(ソースファイルと同一の問題)。このファイルは
generate_index.pyによって自動生成されるため、ソースファイル(Algorithm/.../README_React.html)でaria-label="実装言語"を追加すれば、次回のビルド時にこちらにも反映されます。🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@public/Algorithm/Other/leetcode/83`. Remove Duplicates from Sorted List/Claude 4.6 extended/README_React.html at line 1240, The tablist div (the element with className "flex gap-2 mb-4 flex-wrap" and role="tablist") lacks an accessible name; add an aria-label="実装言語" to the tablist in the source README_React.html (the Algorithm/.../README_React.html file that generate_index.py uses) so the generated file will include aria-label="実装言語" on the same div with role="tablist".Algorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/README_React.html (1)
1240-1240:⚠️ Potential issue | 🟡 Minor
tablistに accessible name を追加してください。
role="tablist"だけではスクリーンリーダーがタブ群の目的を識別できません。aria-label="実装言語"を追加することで、このタブが何を切り替える UI かを伝えられます。♿ 修正例
- <div className="flex gap-2 mb-4 flex-wrap" role="tablist"> + <div className="flex gap-2 mb-4 flex-wrap" role="tablist" aria-label="実装言語">🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Algorithm/Other/leetcode/83`. Remove Duplicates from Sorted List/Claude 4.6 extended/README_React.html at line 1240, Add an accessible name to the tablist element by updating the JSX div with className "flex gap-2 mb-4 flex-wrap" and role="tablist" to include an aria-label (for example aria-label="実装言語"); locate the div element in the React component that renders the tabs (the div with role="tablist") and add aria-label="実装言語" or use aria-labelledby pointing to a visible label element.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@JavaScript/2627`. Debounce/Claude Code Sonnet 4.5 extended/README.md:
- Line 407: The phrase claiming the implementation is "thread-safe" is too
broad; update the README sentence to state that only management of the timer
object is protected by a threading.Lock (i.e., replacement of the timer and
calls to timer.cancel()), and do not imply that the wrapped function fn or race
conditions when t = 0 are guarded; reference the symbols threading.Lock, timer,
timer.cancel(), fn, and t = 0 in the revised wording so it clearly says "timer
management is protected by a lock" rather than "thread-safe."
- Around line 489-505: 経過時間の比較に time.time() を使っているためシステム時計の補正で窓が崩れるので、throttle
関数内の現在時刻取得を time.monotonic() に置き換え、同時に last_call の初期化も time.monotonic()
を使って単調時計で統一してください(参照箇所: 関数 throttle、変数 last_call、変数 now)。
---
Duplicate comments:
In `@Algorithm/Other/leetcode/83`. Remove Duplicates from Sorted List/Claude 4.6
extended/README_React.html:
- Line 1240: Add an accessible name to the tablist element by updating the JSX
div with className "flex gap-2 mb-4 flex-wrap" and role="tablist" to include an
aria-label (for example aria-label="実装言語"); locate the div element in the React
component that renders the tabs (the div with role="tablist") and add
aria-label="実装言語" or use aria-labelledby pointing to a visible label element.
In `@public/Algorithm/Other/leetcode/83`. Remove Duplicates from Sorted
List/Claude 4.6 extended/README_React.html:
- Line 1240: The tablist div (the element with className "flex gap-2 mb-4
flex-wrap" and role="tablist") lacks an accessible name; add an
aria-label="実装言語" to the tablist in the source README_React.html (the
Algorithm/.../README_React.html file that generate_index.py uses) so the
generated file will include aria-label="実装言語" on the same div with
role="tablist".
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: d74424ad-0377-4d1d-9cac-de7fcf465c71
📒 Files selected for processing (3)
Algorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/README_React.htmlJavaScript/2627. Debounce/Claude Code Sonnet 4.5 extended/README.mdpublic/Algorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/README_React.html
…e UI accessibility
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@Algorithm/Other/leetcode/83`. Remove Duplicates from Sorted List/Claude 4.6
extended/README_React.html:
- Around line 687-697: The walkthrough skips the intermediate transition from
current=[2] to current=[3]; update the sequence around step: 5 and step: 6 by
either inserting a new intermediate step (e.g., step: 5.5) that shows current =
nxt advancing from [2] to [3] with highlight adjusted from [1] to the [2] node
and nodes reflecting current→[3], or modify the existing step: 6 text and
highlight to explicitly state "after advancing from the previous step, current =
[3]" and change highlight/index to the [3] node; apply the same fix for the
analogous block referenced around lines 699-710 so the visual/state and
description remain consistent.
In `@JavaScript/2627`. Debounce/Claude Code Sonnet 4.5 extended/README.md:
- Line 494: The throttle implementation initializes last_call with
time.monotonic(), which blocks the very first call because now - last_call ≈ 0;
change the initialization of the last_call variable (currently set via
time.monotonic()) to 0.0 so that the first invocation satisfies now - last_call
>= t/1000.0 and executes immediately, preserving the documented throttle
behavior.
In `@public/Algorithm/Other/leetcode/83`. Remove Duplicates from Sorted
List/Claude 4.6 extended/README_React.html:
- Around line 16-18: The link tag referencing Prism's theme currently points to
the CDN ("https://cdnjs.cloudflare.com/.../prism-tomorrow.min.css"); change it
to use the vendored copy path "/vendor/prismjs/themes/prism-tomorrow.min.css" so
the page uses the local asset, and verify other files that reference Prism theme
(e.g., any other HTML/templating includes for Prism) are updated to the same
local path to keep assets consistent with the vendor policy.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: b9747702-ca0f-4455-8bba-eb2edd9adab9
📒 Files selected for processing (3)
Algorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/README_React.htmlJavaScript/2627. Debounce/Claude Code Sonnet 4.5 extended/README.mdpublic/Algorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/README_React.html
…theme to vendored asset
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@Algorithm/Other/leetcode/83`. Remove Duplicates from Sorted List/Claude 4.6
extended/README_React.html:
- Around line 699-700: The bug is that a non-integer step value (step: 5.5)
breaks navigation because activeStep is used as a 1-based integer index to
access stepsData (producing stepsData[4.5] => undefined); fix by decoupling
display labels from internal indices: keep activeStep as an integer index
(1-based or 0-based consistently) and derive displayLabel (e.g., "5.5")
separately for rendering; update any code that reads stepsData[activeStep - 1]
(or similar) to use the integer index and ensure click handlers for step buttons
translate their label into the proper integer index (and sanitize/round any
incoming step values), and ensure references to cur.step / cur.title come from
stepsData via the integer index.
- Around line 28-55: The Prism JS script tags are not being rewritten because
generate_index.py currently only has cdnjs rewrite rules for Prism CSS (and only
jsDelivr rules for Prism JS); update generate_index.py to also include cdnjs ->
local/vendor rewrite rules for the Prism JS components (prism.min.js,
prism-python.min.js, prism-typescript.min.js, prism-rust.min.js,
prism-line-numbers.min.js, prism-toolbar.min.js, prism-copy-to-clipboard.min.js)
following the same pattern used for the CSS rules, or alternatively normalize
the source HTML (README_React.html) to use jsDelivr paths or /vendor/ references
for those <script> src entries so they match the existing jsDelivr/vendor
rewrite logic.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 31d7949a-dd3b-4de9-92de-d1df11604850
📒 Files selected for processing (2)
Algorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/README_React.htmlpublic/Algorithm/Other/leetcode/83. Remove Duplicates from Sorted List/Claude 4.6 extended/README_React.html
… Prism JS rewrite rules
There was a problem hiding this comment.
Actionable comments posted: 36
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (11)
public/Algorithm/BinarySearch/leetcode/98. Validate Binary Search Tree/Claude Sonnet 4.5/README_react.html (1)
44-71:⚠️ Potential issue | 🟡 MinorPrism.js コピーボタンのスタイリングに
!importantが不足しています。コーディングガイドラインに従い、Tailwind preflight によって要素が非表示になることを防ぐため、Prism.js ツールバーの CSS に
!importantオーバーライドを追加する必要があります。🛠️ 修正案
div.code-toolbar > .toolbar { - opacity: 1; + opacity: 1 !important; } div.code-toolbar > .toolbar .toolbar-item > button, div.code-toolbar > .toolbar .toolbar-item > a { - background: `#fff`; - border: 1px solid `#e6e8ef`; + background: `#fff` !important; + border: 1px solid `#e6e8ef` !important; border-radius: 10px; padding: 1rem 1.5rem; margin: 1rem 1rem 0 0; font: 600 13px/1.2 Inter, system-ui, sans-serif; - color: `#334155`; + color: `#334155` !important; box-shadow: 0 2px 6px rgba(20, 32, 70, 0.06); transition: transform 0.15s, box-shadow 0.15s, background 0.15s; }As per coding guidelines:
**/*README*.html: Prism.js copy button styling must use !important CSS overrides to prevent Tailwind preflight from hiding the element🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@public/Algorithm/BinarySearch/leetcode/98`. Validate Binary Search Tree/Claude Sonnet 4.5/README_react.html around lines 44 - 71, The Prism.js toolbar CSS must explicitly override Tailwind preflight by adding !important to the toolbar and button link rules; update the selectors div.code-toolbar > .toolbar and div.code-toolbar > .toolbar .toolbar-item > button, div.code-toolbar > .toolbar .toolbar-item > a (and the hover rule for div.code-toolbar > .toolbar .toolbar-item > button) to include !important on visibility/display-related and key styling properties (e.g., add display: inline-block !important; opacity: 1 !important; and append !important to background, border, padding, margin, color, box-shadow, and transition declarations) so the toolbar and copy buttons are not hidden or reset by Tailwind preflight.public/Mathematics/Number Theory/HackerRank/Easy/Primitive_Problem.html (1)
33-34: 🧹 Nitpick | 🔵 TrivialHTML コメントが重複しています。
以下のコメントが重複しています:
- 行 33-34:
<!-- React & ReactDOM -->が2回- 行 44-45:
<!-- Babel Standalone -->が2回♻️ 重複コメントを削除する修正案
<!-- Prism.js CSS --> ... - <!-- React & ReactDOM --> <!-- React & ReactDOM --> <script crossorigin src="https://github.com/vendor/react/react.production.min.js" ></script> ... - <!-- Babel Standalone --> <!-- Babel Standalone --> <script src="https://github.com/vendor/babel/babel.min.js" ></script>Also applies to: 44-45
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@public/Mathematics/Number` Theory/HackerRank/Easy/Primitive_Problem.html around lines 33 - 34, HTML 内で同じコメントが重複しています — 削除対象はコメント文字列 "<!-- React & ReactDOM -->" と "<!-- Babel Standalone -->" です。該当する重複行のうち一方を削除してコメントを一意にし、他の部分(同じ文字列がある箇所)に影響が出ないことを確認してください(ファイル内の重複するコメント文字列を探して片方だけ残す)。public/DataStructures/LinkedLists/leetcode/86. Partition List/Claude/README.html (1)
68-96:⚠️ Potential issue | 🟠 MajorPrismコピーボタンに
!importantオーバーライドが必要Tailwindのpreflightリセットによってコピーボタンが非表示になる可能性があるため、
displayプロパティに!importantオーバーライドを追加する必要があります。コーディングガイドラインに基づき、コピーボタンのスタイリングには!importantを使用してください。🎨 推奨される修正
/* Prism Toolbar */ div.code-toolbar > .toolbar .toolbar-item > button, div.code-toolbar > .toolbar .toolbar-item > a { + display: inline-block !important; background: `#fff`; border: 1px solid `#e6e8ef`; border-radius: 10px;As per coding guidelines: "Prism.js copy button styling must use !important CSS overrides to prevent Tailwind preflight from hiding the element"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@public/DataStructures/LinkedLists/leetcode/86`. Partition List/Claude/README.html around lines 68 - 96, The Prism copy-button styles need an explicit display override with !important to counter Tailwind preflight; update the selector div.code-toolbar > .toolbar .toolbar-item > button (and similarly for any anchor variant div.code-toolbar > .toolbar .toolbar-item > a) to include a display rule such as "display: inline-flex !important;" (and ensure any visibility/opacity defaults that could hide it are also forced if present), keeping the existing hover rules intact.public/DataStructures/bit manipulations/leetcode/89. Gray Code/GPT/README.html (1)
94-120:⚠️ Potential issue | 🟡 MinorPrism コピーボタンのスタイリングに
!importantが不足しています。コーディングガイドラインによると、Tailwind の preflight がコピーボタン要素を隠すのを防ぐため、Prism.js のコピーボタンスタイリングには
!importantオーバーライドを使用する必要があります。現在のスタイルには!importantが含まれていません。🔧 提案: !important を追加
div.code-toolbar > .toolbar .toolbar-item > button, div.code-toolbar > .toolbar .toolbar-item > a { - background: `#fff`; - border: 1px solid `#e6e8ef`; - border-radius: 0.5rem; - padding: 0.8rem 1.2rem; - margin: 1rem 1rem 0 0; + background: `#fff` !important; + border: 1px solid `#e6e8ef` !important; + border-radius: 0.5rem !important; + padding: 0.8rem 1.2rem !important; + margin: 1rem 1rem 0 0 !important; font: 600 13px/1.2 Inter, system-ui, -apple-system, 'Segoe UI', 'Helvetica Neue', Arial, - sans-serif; - color: `#334155`; - box-shadow: 0 2px 6px rgba(20, 32, 70, 0.06); + sans-serif !important; + color: `#334155` !important; + box-shadow: 0 2px 6px rgba(20, 32, 70, 0.06) !important; transition: transform 0.15s, box-shadow 0.15s, background 0.15s; }As per coding guidelines:
**/*README*.html: Prism.js copy button styling must use !important CSS overrides to prevent Tailwind preflight from hiding the element🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@public/DataStructures/bit` manipulations/leetcode/89. Gray Code/GPT/README.html around lines 94 - 120, The Prism copy-button CSS lacks !important overrides and Tailwind preflight can hide it; update the selector div.code-toolbar > .toolbar .toolbar-item > button, div.code-toolbar > .toolbar .toolbar-item > a and its hover rule (div.code-toolbar > .toolbar .toolbar-item > button:hover) to append !important to the properties that Tailwind may override (at minimum background, border, border-radius, padding, margin, color, box-shadow and any transition declarations) so the Prism copy button styles always win and are not suppressed by preflight.public/Algorithm/DynamicProgramming/leetcode/63. Unique Paths II/Claude/README.html (1)
1848-1850:⚠️ Potential issue | 🟡 MinorautoloaderのCDN参照がvendoring戦略と不整合です
Lines 1405-1410でPrism.jsのコアファイルと関連プラグインをローカルの
/vendor/prismjs/から読み込んでいますが、autoloaderのlanguages_path(lines 1848-1850)はCDN URLを参照しています。これにより、追加言語コンポーネントの動的読み込みがネットワーク経由で行われます。言語コンポーネントが既にローカルベンダーディレクトリ(
/public/vendor/prismjs/components/)に実装済みのため、パスを/vendor/prismjs/components/に更新してvendoring戦略を統一することを検討してください。🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@public/Algorithm/DynamicProgramming/leetcode/63`. Unique Paths II/Claude/README.html around lines 1848 - 1850, autoloaderがCDNを参照しているためvendoringと不整合が起きています — update the Prism.plugins.autoloader.languages_path assignment so it points to the local vendored components (e.g. "/vendor/prismjs/components/") instead of the CDN URL; locate the Prism.plugins.autoloader.languages_path assignment and replace the CDN string with the local path to match the earlier local imports of Prism core/plugins from "/vendor/prismjs/".public/Mathematics/Fundamentals/HackerRank/Claude/Easy/Halloween party/Halloween_party.html (1)
31-45:⚠️ Potential issue | 🔴 Criticalvendor/prismjs ディレクトリにほぼすべての Prism アセットが欠けています。
このHTML(31~45行)は15以上のPrismアセットを参照していますが、
vendor/prismjs/に存在するのはthemes/prism-tomorrow.min.cssのみです。以下のファイルが欠落しています:
prism.js(コアライブラリ)prism-python.min.jsplugins/line-numbers/*plugins/toolbar/*plugins/copy-to-clipboard/*- その他
現在の状態では、このページのコード構文ハイライト機能は全く動作しません。vendorディレクトリを正しく設定するか、アセット参照を削除する必要があります。
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@public/Mathematics/Fundamentals/HackerRank/Claude/Easy/Halloween` party/Halloween_party.html around lines 31 - 45, The HTML references many Prism assets (e.g., prism.js, components/prism-python.min.js, plugins/line-numbers/prism-line-numbers.* , plugins/toolbar/prism-toolbar.* , plugins/copy-to-clipboard/prism-copy-to-clipboard.* and themes/prism-tomorrow.css) that are missing from vendor/prismjs; either populate vendor/prismjs with the required files (download the core prism.js, the python component, and the plugins' JS/CSS files and keep the path structure used in the <script> and <link> tags) or remove/comment out these <script> and <link> tags in Halloween_party.html so the page no longer references missing assets and the code highlighting will not attempt to load non-existent files.public/DataStructures/LinkedLists/other/DoublyLinkedList/GPT/README.html (2)
133-146:⚠️ Potential issue | 🟠 Major
.copy-btnに!importantオーバーライドを追加してください。このパス配下の README HTML では、Line 133 以降のコピー button スタイルに
!importantが必要です。現状だと Tailwind preflight が入る配信面でボタンが非表示・崩れになる可能性があります。As per coding guidelines, "Prism.js copy button styling must use !important CSS overrides to prevent Tailwind preflight from hiding the element".修正案
.copy-btn { - position: absolute; - top: 10px; - right: 10px; - background: `#667eea`; - color: white; - border: none; - padding: 8px 15px; - border-radius: 6px; - cursor: pointer; - font-size: 0.8rem; - transition: all 0.3s ease; - z-index: 10; + position: absolute !important; + top: 10px !important; + right: 10px !important; + display: inline-flex !important; + align-items: center !important; + justify-content: center !important; + visibility: visible !important; + opacity: 1 !important; + background: `#667eea` !important; + color: white !important; + border: none !important; + padding: 8px 15px !important; + border-radius: 6px !important; + cursor: pointer !important; + font-size: 0.8rem !important; + transition: all 0.3s ease !important; + z-index: 10 !important; }🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@public/DataStructures/LinkedLists/other/DoublyLinkedList/GPT/README.html` around lines 133 - 146, The .copy-btn CSS rules are being overridden by Tailwind preflight; update the .copy-btn declaration so each property that controls visibility/layout (at minimum position, top, right, background, color, border, padding, border-radius, cursor, font-size, transition, z-index) uses !important to force override (i.e., append !important to those property values in the .copy-btn rule) so the Prism.js copy button remains visible and styled correctly.
856-864:⚠️ Potential issue | 🔴 Critical
eraseデモの復元処理がNotFoundErrorになります。Line 850 で
nodes[1]をremoveChildした後、Line 855 で同じnodes[1]をinsertBeforeの基準ノードに再利用しているため、復元タイマー実行時に例外になります。現在の子ノードを取り直して挿入先を決めてください。修正案
setTimeout(() => { const newNode = animationController.createNode('15'); - container.insertBefore(newNode, nodes[1]); + const restoreBefore = container.children[1] ?? null; + container.insertBefore(newNode, restoreBefore); status.textContent = 'erase_at(2)を実行すると...'; }, 4000);🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@public/DataStructures/LinkedLists/other/DoublyLinkedList/GPT/README.html` around lines 856 - 864, The restore timer uses the stale nodes[1] reference after container.removeChild, causing NotFoundError; instead, when inserting the new node (in the second setTimeout) re-acquire the current child reference from container (e.g., const currentNodes = container.children or container.childNodes and use currentNodes[1] or container.children[index] as the insertBefore target) or save a stable reference (like the nextSibling before removal) and use that; update the code around container.removeChild and container.insertBefore to use the live reference (container.children / nextSibling) and keep status.textContent updates as-is.public/Algorithm/DynamicProgramming/leetcode/64. Minimum Path Sum/Claude/README.html (1)
179-207:⚠️ Potential issue | 🟠 MajorPrism のコピーボタン用 CSS を
!important付きにそろえてください。このファイルは Tailwind と Prism の
toolbar/copy-to-clipboardを同時に有効化していますが、現状のコピーボタン用スタイルは!importantなしです。repo ルール上、この組み合わせでは preflight に負けてボタンが非表示・表示崩れになることがあるため、asset の vendor 化と一緒に CSS 側も固定しておいた方が安全です。修正例
div.code-toolbar > .toolbar .toolbar-item > button, div.code-toolbar > .toolbar .toolbar-item > a { - background: `#fff`; - border: 1px solid `#e6e8ef`; - border-radius: 10px; - padding: 1rem 1.5rem; - margin-top: 1rem; - margin-right: 1rem; + background: `#fff` !important; + border: 1px solid `#e6e8ef` !important; + border-radius: 10px !important; + padding: 1rem 1.5rem !important; + margin-top: 1rem !important; + margin-right: 1rem !important; font: 600 1rem/1.2 Inter, system-ui, -apple-system, 'Segoe UI', 'Helvetica Neue', Arial, - sans-serif; - color: `#334155`; - box-shadow: 0 2px 6px rgba(20, 32, 70, 0.06); + sans-serif !important; + color: `#334155` !important; + box-shadow: 0 2px 6px rgba(20, 32, 70, 0.06) !important; transition: transform 0.15s ease, box-shadow 0.15s ease, - background 0.15s ease; + background 0.15s ease !important; } div.code-toolbar > .toolbar .toolbar-item > button:hover { - transform: translateY(-1px); - box-shadow: 0 10px 28px rgba(20, 32, 70, 0.08); - background: linear-gradient(180deg, `#e8fff6`, `#c8f1e1`); + transform: translateY(-1px) !important; + box-shadow: 0 10px 28px rgba(20, 32, 70, 0.08) !important; + background: linear-gradient(180deg, `#e8fff6`, `#c8f1e1`) !important; }As per coding guidelines "Prism.js copy button styling must use !important CSS overrides to prevent Tailwind preflight from hiding the element".
Also applies to: 1348-1352
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@public/Algorithm/DynamicProgramming/leetcode/64`. Minimum Path Sum/Claude/README.html around lines 179 - 207, Update the Prism copy-button CSS to use !important overrides so Tailwind preflight cannot hide or override it: add !important to the properties in the selectors "div.code-toolbar > .toolbar .toolbar-item > button, div.code-toolbar > .toolbar .toolbar-item > a" (background, border, border-radius, padding, margin-top, margin-right, font, color, box-shadow, transition) and also to the properties in "div.code-toolbar > .toolbar .toolbar-item > button:hover" (transform, box-shadow, background) so the copy-to-clipboard toolbar styling always wins over Tailwind preflight; make the changes where the current Prism toolbar styles are defined (the div.code-toolbar selector blocks).public/JavaScript/2626. Array Reduce Transformation/Claude Code Sonnet 4.5 extended/README_react.html (1)
64-86:⚠️ Potential issue | 🟠 MajorPrism のコピーボタン用スタイルに
!importantを付けてください。この README では copy-to-clipboard プラグインを読み込んでいますが、Line 64-86 の toolbar/button 上書きが
!importantなしのため、Tailwind preflight に負けてコピーボタンが非表示または崩れたままになる可能性があります。修正例
/* Prism toolbar customization */ div.code-toolbar > .toolbar { - opacity: 1; - right: 0.5em; - top: 0.5em; + opacity: 1 !important; + right: 0.5em !important; + top: 0.5em !important; } div.code-toolbar > .toolbar > .toolbar-item > button { - background: `#10b981`; - color: white; - padding: 0.5em 1em; - border-radius: 0.5em; - border: none; - cursor: pointer; - font-weight: 600; - transition: all 0.2s; + background: `#10b981` !important; + color: white !important; + padding: 0.5em 1em !important; + border-radius: 0.5em !important; + border: none !important; + cursor: pointer !important; + font-weight: 600 !important; + transition: all 0.2s !important; } div.code-toolbar > .toolbar > .toolbar-item > button:hover { - background: `#059669`; - transform: translateY(-2px); - box-shadow: 0 4px 12px rgba(16, 185, 129, 0.3); + background: `#059669` !important; + transform: translateY(-2px) !important; + box-shadow: 0 4px 12px rgba(16, 185, 129, 0.3) !important; }As per coding guidelines, "Prism.js copy button styling must use !important CSS overrides to prevent Tailwind preflight from hiding the element".
Also applies to: 870-884
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@public/JavaScript/2626`. Array Reduce Transformation/Claude Code Sonnet 4.5 extended/README_react.html around lines 64 - 86, The Prism copy-button styles are being overridden by Tailwind preflight; update the button rule(s) for the selector div.code-toolbar > .toolbar > .toolbar-item > button (and its hover rule div.code-toolbar > .toolbar > .toolbar-item > button:hover) to append !important to the properties that affect visibility and layout (at minimum display/opacity/right/top/background/color/padding/border-radius/border/cursor/font-weight/transition and hover transform/box-shadow/background) so the copy-to-clipboard toolbar cannot be hidden or styled away; apply the same !important fixes to the duplicate rule block referenced later (the block around lines noted in the comment).public/DataStructures/LinkedLists/leetcode/2. Add Two Numbers/Claude/README.html (1)
20-31:⚠️ Potential issue | 🟠 MajorPrism コピーボタンのスタイルを
!importantで上書きしてください。このファイルは Tailwind CSS と Prism の
toolbar/copy-to-clipboardプラグインを読み込んでいますが、.toolbar-item > button/aのスタイル(background、border、border-radius、padding、font、color、box-shadow)に!importantがありません。Tailwind preflight がこれらのスタイルを上書きしてコピーボタンが隠れるリスクがあります。修正案
div.code-toolbar > .toolbar .toolbar-item > button, div.code-toolbar > .toolbar .toolbar-item > a { - background: `#fff`; - border: 1px solid `#e6e8ef`; - border-radius: 10px; - padding: 6px 10px; + background: `#fff` !important; + border: 1px solid `#e6e8ef` !important; + border-radius: 10px !important; + padding: 6px 10px !important; font: 600 13px/1.2 Inter, system-ui, - sans-serif; - color: `#334155`; - box-shadow: 0 2px 6px rgba(20, 32, 70, 0.06); + sans-serif !important; + color: `#334155` !important; + box-shadow: 0 2px 6px rgba(20, 32, 70, 0.06) !important; + text-shadow: none !important; + cursor: pointer !important; transition: transform 0.15s, box-shadow 0.15s, background 0.15s; } div.code-toolbar > .toolbar .toolbar-item > button:hover { - transform: translateY(-1px); - box-shadow: 0 10px 28px rgba(20, 32, 70, 0.08); - background: linear-gradient(180deg, `#d1fae5`, `#a7f3d0`); + transform: translateY(-1px); + box-shadow: 0 10px 28px rgba(20, 32, 70, 0.08) !important; + background: linear-gradient(180deg, `#d1fae5`, `#a7f3d0`) !important; }🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@public/DataStructures/LinkedLists/leetcode/2`. Add Two Numbers/Claude/README.html around lines 20 - 31, The Prism toolbar copy-button styles risk being overridden by Tailwind preflight; update the CSS for the Prism toolbar (selectors .toolbar-item > button and .toolbar-item > a, and specifically the copy-to-clipboard/toolbar plugin rules) to force the button styles by adding !important to background, border, border-radius, padding, font (font-size/font-family), color, and box-shadow declarations so the copy-button remains visible and styled regardless of Tailwind overrides.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@generate_index.py`:
- Around line 107-114: generate_index.py の Prism プラグイン JS の置換先が vendored
実体と不一致なので、プラグイン参照が 404 になる問題を修正してください:該当の置換タプル(正規表現パターン
r'https://cdnjs\.cloudflare\.com/ajax/libs/prism/[^/]+/plugins/([a-zA-Z0-9_-]+)/prism-\1\.min\.js'
に対応する置換先)を、vendored ファイルが unminified である copy_vendor_files() の出力に合わせて
prism-\1.min.js から prism-\1.js に書き換えるか、逆に copy_vendor_files() が minified
ファイルを配置するよう統一する(どちらか一方を選んで一貫性を保つ)。
In `@public/Algorithm/Backtracking/leetcode/52`. N-Queens ll/GPT/README.html:
- Line 8: Set Prism.plugins.autoloader.languages_path explicitly so the
autoloader can reliably fetch language components: after loading prism and
before the autoloader executes (i.e., around where prism-autoloader.min.js is
included in README.html), assign a concrete URL to
Prism.plugins.autoloader.languages_path (for example pointing to your /vendor
components directory) so the language-typescript block at/near line 297 is
always highlighted; update the HTML to set
Prism.plugins.autoloader.languages_path to the correct public path and ensure
this runs prior to any code blocks being processed.
In `@public/Algorithm/Backtracking/leetcode/93`. Restore IP
Addresses/Claude/README.html:
- Around line 955-959: The Prism copy-button is being overridden by Tailwind
preflight; add explicit CSS overrides that force the toolbar and copy button
styles with !important so the button remains visible and functional — target the
selectors used in the diff such as div.code-toolbar > .toolbar and the Prism
toolbar button (e.g., .toolbar .plugin-button or .toolbar button) and set
display, visibility, opacity, pointer-events and positioning properties with
!important to ensure the copy-to-clipboard button is not hidden or collapsed.
In `@public/Algorithm/BinarySearch/leetcode/4`. Median of Two Sorted
Arrays/Claude/README.html:
- Around line 667-671: The Prism copy button UI can be hidden by Tailwind
preflight; after enabling prism-toolbar and prism-copy-to-clipboard, add a CSS
override (loaded after the Prism scripts) that forces visibility using
!important for the toolbar and copy button selectors—e.g. target .prism-toolbar,
.prism-toolbar .toolbar-item, .prism-copy-to-clipboard, and the copy button
class used by the plugin (e.g. .copy-to-clipboard or
.toolbar-item.copy-to-clipboard) and set display, opacity, pointer-events and
positioning as needed with !important so the toolbar and copy button always
render correctly.
In `@public/Algorithm/BinarySearch/leetcode/95`. Unique Binary Search Trees
II/Claude/README.html:
- Around line 769-773: The Prism copy-to-clipboard plugin styles are being
overridden by Tailwind preflight; add an explicit stylesheet after Prism that
targets the Prism toolbar selectors (e.g., div.code-toolbar > .toolbar and
div.code-toolbar > .toolbar .toolbar-item > button, a) and use !important on
visibility/opacity, background, border, color and box-shadow rules so the copy
button remains visible when prism-copy-to-clipboard is enabled.
In `@public/Algorithm/BinarySearch/leetcode/99`. Recover Binary Search Tree/Claude
Opus 4.5/README_react.html:
- Around line 971-975: The Prism copy-to-clipboard toolbar can be hidden by
Tailwind preflight; add explicit CSS overrides using !important for the Prism
toolbar and copy button styles referenced by prism-toolbar and
prism-copy-to-clipboard so the toolbar is always visible — locate where
prism-toolbar.min.js and prism-copy-to-clipboard.min.js are included and add a
small stylesheet (or inline <style>) that targets the Prism toolbar and
.prism-toolbar, .prism-copy-to-clipboard-button (or .copy-to-clipboard)
selectors and declares display, opacity, pointer-events, and z-index with
!important to force visibility and interaction.
In `@public/Algorithm/DynamicProgramming/leetcode/91`. Decode
Ways/Claude/README_react.html:
- Around line 936-940: Prism copy button styling is being overridden by Tailwind
preflight; update the README_react.html (the Prism toolbar/copy button styles)
to include !important overrides for the toolbar and copy button selectors (e.g.,
the div.code-toolbar > .toolbar and div.code-toolbar > .toolbar .toolbar-item >
button / a selectors used by prism-toolbar and prism-copy-to-clipboard) so the
toolbar is visible and buttons render correctly—add rules forcing
opacity/display/visibility/background/border/color with !important to prevent
Tailwind from hiding or collapsing the copy button.
In `@public/Algorithm/DynamicProgramming/leetcode/91`. Decode
Ways/Claude/README.html:
- Around line 845-849: The Prism copy button is getting overridden by Tailwind
preflight because the page loads prism-copy-to-clipboard.min.js but the CSS
overrides for div.code-toolbar/.toolbar/.copy-to-clipboard do not use
!important; update the page to include a CSS rule (loaded after Tailwind or
inlined) that targets div.code-toolbar, .code-toolbar .toolbar, and the copy
button selector added by prism-copy-to-clipboard (e.g., .code-toolbar
.toolbar-item.copy-to-clipboard or .code-toolbar .toolbar .copy-to-clipboard)
and add necessary properties with !important (display, position, z-index,
visibility, etc.) so the injected copy button is never hidden by preflight;
ensure the stylesheet is referenced together with the existing script tag
prism-copy-to-clipboard.min.js so the selectors match the plugin output.
In `@public/Algorithm/DynamicProgramming/other/Longest-common` subsequence
problem/Claude/README.html:
- Around line 440-442: Add a copy button and enforce its CSS with !important and
ensure Prism autoloader is configured: insert a button with class "copy-btn"
adjacent to code blocks, implement a copyCode(button) function to copy the
sibling code text and provide temporary feedback, create CSS selectors targeting
.copy-btn (and any Prism-specific container classes) that override defaults
using !important for properties like position, background, color, z-index and
visibility, and set Prism.plugins.autoloader.languages_path to the correct
vendor path (e.g. "/vendor/prismjs/components/") after loading prism-autoloader
so language-xxx highlighting (like language-python) is enabled.
In `@public/Algorithm/ExpandAroundCenter/leetcode/5`. Longest Palindromic
Substring/Claude/README.html:
- Around line 781-785: The custom CSS overrides for Prism's toolbar/button
(currently targeting div.code-toolbar and related selectors that style the
prism-copy-to-clipboard toolbar and buttons) must be changed to use !important
so Tailwind preflight doesn't hide or override them; update the existing CSS
rules that target div.code-toolbar, .prism-toolbar, .prism-copy-to-clipboard and
the toolbar button selectors to append !important to critical properties
(display, visibility, opacity, position, z-index, width/height, background,
color) so the vendorized prism-copy-to-clipboard plugin remains visible and
styled correctly.
In `@public/Algorithm/Other/leetcode/6`. Zigzag Conversion/Claude/README.html:
- Around line 867-871: The Prism copy-to-clipboard button styling is being
overridden by Tailwind preflight because the existing div.code-toolbar styles
lack !important; add CSS overrides for the Prism toolbar and copy button
(targeting selectors like div.code-toolbar, .prism-toolbar,
.prism-copy-to-clipboard and the toolbar button/toolbar-item selectors) that
append !important to display, visibility, opacity, and positioning properties so
the copy button is always visible and styled correctly when prism-toolbar and
prism-copy-to-clipboard plugins are loaded.
In `@public/Algorithm/Other/leetcode/7`. Reverse Integer/claude/README.html:
- Around line 694-698: The Prism copy-to-clipboard toolbar styles are being
overridden by Tailwind preflight; add strong CSS overrides that include
!important for the toolbar/button selectors (e.g., .prism-toolbar,
.prism-toolbar .toolbar-item, .prism-copy-to-clipboard-button or
.prism-copy-to-clipboard) so the copy button remains visible — insert these
rules in a style block loaded after the prism vendor scripts (the three script
tags referencing prism.js, prism-python.min.js, and
prism-copy-to-clipboard.min.js) and ensure properties controlling
display/visibility/position/z-index use !important.
In `@public/Algorithm/Other/leetcode/82`. Remove Duplicates from Sorted List
II/Claude/README.html:
- Around line 865-867: Autoloader will try to fetch language files from the
wrong location because languages_path isn't set; set the autoloader path so
lazy-load requests go to /vendor/prismjs/components/. Add a statement that
assigns Prism.plugins.autoloader.languages_path = '/vendor/prismjs/components/';
(or equivalent initialization) adjacent to where prism-core.min.js and
prism-autoloader.min.js are included so the autoloader uses the correct base URL
when loading language-xyz components like language-python.
In `@public/Algorithm/Other/leetcode/90`. Subsets II/Claude/README.html:
- Around line 2566-2570: The Prism copy-to-clipboard toolbar is being loaded but
Tailwind preflight can override its styles; add explicit CSS overrides that
target the toolbar container and copy button (e.g., .code-toolbar, .code-toolbar
.toolbar, .code-toolbar .toolbar .copy-to-clipboard or
.copy-to-clipboard-button) and apply necessary properties with !important
(visibility, display, position, z-index, padding/margin) so the copy button is
always visible and positioned correctly when using Prism's
toolbar/copy-to-clipboard plugins.
In `@public/Algorithm/Sliding` Window Method/leetcode/3. Longest Substring Without
Repeating Characters/Claude/README.html:
- Around line 1278-1279: The Prism copy-to-clipboard toolbar button styling
needs !important overrides so Tailwind preflight doesn't hide or break it; add a
small CSS block loaded after the prism scripts that targets the
prism-copy-to-clipboard/ prism-toolbar selectors (e.g. .prism-toolbar
.toolbar-item, .prism-copy-to-clipboard and the copy button element) and apply
the necessary display/visibility/positioning rules with !important (so the
toolbar button remains visible and correctly positioned), ensuring the style is
included in the README HTML that references prism-copy-to-clipboard and
prism-toolbar.
In `@public/Algorithm/TwoPointers/leetcode/67`. Add
Binary/Claude/README_react.html:
- Around line 765-769: The Prism toolbar/copy button is being overridden by
Tailwind preflight; add explicit CSS overrides with !important for the Prism
selectors (e.g., .prism-toolbar, .prism-copy-to-clipboard, .prism-copy-button,
.prism-toolbar button, .prism-toolbar a) to force visible layout and
interactivity — include properties like display, position, opacity,
pointer-events, z-index, background, border, color and padding with !important —
and place that CSS after the vendored prism scripts so the toolbar and
copy-to-clipboard button are not hidden by Tailwind.
In `@public/Concurrency/1114`. Print in Order/Claude Sonnet 4.5/README_react.html:
- Around line 1210-1214: The Prism copy-to-clipboard button is being styled away
by Tailwind's preflight; update the stylesheet to add explicit !important
overrides for the Prism toolbar button (target the selector div.code-toolbar >
.toolbar .toolbar-item > button and related .toolbar .toolbar-item a) to restore
background, border, color, padding and cursor so the copy button is visible;
ensure these overrides are loaded after Prism scripts/styles and include the
!important flag on properties that preflight overrides (background, border,
color, display) to guarantee they take effect.
In `@public/Concurrency/1115`. Print FooBar Alternately/Claude Sonnet
4.5/README_react.html:
- Around line 22-27: Update the stylesheet overrides in README_react.html that
target the Prism toolbar and copy button so they use !important to beat Tailwind
preflight; specifically add !important to the rules for selectors like
.prism-toolbar, .prism-toolbar .toolbar-item and the copy button selector(s)
from prism-copy-to-clipboard (e.g., .prism-copy-to-clipboard or
.prism-copy-to-clipboard-button) so visibility, display, positioning and any
background/color styles are enforced.
In `@public/Concurrency/1116`. Print Zero Even Odd/Claude Sonnet
4.5/README_react.html:
- Around line 1600-1604: README_react.html 内の Prism toolbar / copy ボタン用スタイルが
Tailwind preflight に上書きされる可能性があるため、現在の CSS (該当ブロックは div.code-toolbar 関連のスタイル)
に防御的な !important オーバーライドを追加してください。具体的にはセレクタ div.code-toolbar > .toolbar の
opacity に !important を付与し、div.code-toolbar > .toolbar .toolbar-item > button,
div.code-toolbar > .toolbar .toolbar-item > a の display, visibility, opacity,
background, border, border-radius, padding, margin, color, box-shadow にそれぞれ
!important を追加して確実に表示されるようにしてください(対象は既存の toolbar / copy-to-clipboard
プラグイン用スタイル定義)。
In `@public/Concurrency/1117`. Building H2O/Claude Sonnet 4.5/README_react.html:
- Around line 831-835: The Prism copy-to-clipboard toolbar styles are being
overridden by Tailwind preflight; update the Prism toolbar CSS overrides to use
!important so the copy button stays visible. Specifically, add !important to the
rules targeting .prism-toolbar, the toolbar items/selectors (e.g. .prism-toolbar
.toolbar-item or .prism-toolbar .toolbar-button), and the copy button/link
selector used by the copy-to-clipboard plugin (e.g. .prism-copy-to-clipboard or
.prism-copy-to-clipboard-button / a.prism-copy-to-clipboard) so their
display/visibility/background/border styles cannot be reset by Tailwind
preflight.
In `@public/Concurrency/1195`. Fizz Buzz Multithreaded/Claude Sonnet
4.5/README_react.html:
- Around line 1571-1575: Add the missing Prism toolbar CSS and strengthen
existing overrides so the copy button is reliably visible: include the
prism-toolbar.css (matching the included scripts prism-toolbar.min.js and
prism-copy-to-clipboard.min.js) in the head, and update the existing
.code-toolbar / toolbar-related rules to use !important for properties that
Tailwind preflight may override (e.g., display, position, z-index, visibility)
so the prism-toolbar and copy button styles applied by
prism-toolbar/prism-copy-to-clipboard are not suppressed.
In `@public/Concurrency/1226`. The Dining Philosophers/Claude Sonnet
4.5/README_react.html:
- Around line 1037-1041: Update README_react.html to add stronger CSS overrides
for the Prism copy-to-clipboard toolbar so Tailwind's preflight can't hide or
break the button: modify the existing rules that target div.code-toolbar,
.code-toolbar .toolbar, and the copy button introduced by
prism-copy-to-clipboard (e.g., selectors referencing .toolbar, .toolbar button,
.prism-copy-to-clipboard) to include !important on display, position, z-index,
padding and visibility-related properties and ensure the button has explicit
display:block/inline-block and pointer-events enabled; apply these overrides
where the Prism plugin scripts are included so the copy button remains visible
and styled across environments.
In `@public/DataStructures/bit` manipulations/leetcode/89. Gray
Code/Claude/README.html:
- Around line 1477-1478: The Prism copy-to-clipboard/toolbar CSS overrides are
being defeated by Tailwind preflight; update the Prism toolbar and copy button
override rules (the styles affecting the toolbar and .prism-copy-to-clipboard /
.prism-toolbar button selectors used with prism-toolbar.min.js and
prism-copy-to-clipboard.min.js) to append !important to the properties that
control visibility, display, position and z-index so the copy button cannot be
hidden or restyled by Tailwind; ensure all relevant override declarations that
target the toolbar and copy button include !important.
In `@public/DataStructures/Map/leetcode/claude/README_react.html`:
- Around line 836-840: The Prism copy-to-clipboard plugin's toolbar button CSS
(the rules in the plugin CSS around lines 44–71) is being overridden by
Tailwind; update the plugin CSS (or your site override) to append !important to
the toolbar button rules so they cannot be clobbered — specifically add
!important to properties on the toolbar/button selectors such as .prism-toolbar
.toolbar-item, .prism-copy-to-clipboard, and .prism-copy-to-clipboard-button
(and any display/visibility/position/opacity rules in that block) so the copy
button remains visible and correctly positioned when
prism-copy-to-clipboard.min.js is loaded.
In `@public/DataStructures/Stacks/leetcode/85`. Maximal Rectangle/GPT/README.html:
- Around line 1060-1066: The Prism copy button styling is being overridden by
Tailwind preflight; add explicit CSS overrides using !important for the Prism
toolbar selectors (e.g., div.code-toolbar > .toolbar .toolbar-item > button and
div.code-toolbar > .toolbar .toolbar-item > a) to restore visibility and layout;
update the stylesheet that applies Prism assets to include rules forcing
display, padding, background, border, color and cursor with !important so the
toolbar and copy-to-clipboard plugin UI are not hidden or reset by Tailwind.
In `@public/DataStructures/Trees/BFS`・DFS/leetcode/77.
Combinations/Claude/README.html:
- Line 10: The Prism toolbar styles for the copy button need to be forced with
!important: locate where the README loads Prism CSS (reference the href line for
prism-tomorrow.css) and add overrides for the selectors ".code-toolbar >
.toolbar" and ".code-toolbar > .toolbar > .toolbar-item > button" that append
"!important" to the relevant properties (e.g., background, border, color,
box-shadow, padding) so the copy-to-clipboard toolbar styles cannot be
overridden by page-level rules; ensure the overrides are applied after the Prism
stylesheet is loaded (inline <style> or a separate CSS file included after
prism-tomorrow.css) so the !important rules take effect.
In `@public/DataStructures/Trees/BFS`・DFS/leetcode/87. Scramble
String/Claude/README.html:
- Around line 26-30: The Prism copy-to-clipboard toolbar is being hidden by
Tailwind preflight because there is no forceful override; add CSS rules in the
README.html stylesheet targeting the prism toolbar (e.g., selectors like
div.code-toolbar > .toolbar, div.code-toolbar > .toolbar .toolbar-item, and
div.code-toolbar > .toolbar .toolbar-item > button) that set display
(inline-flex), visibility (visible), and opacity (1) with !important to ensure
the prism-copy-to-clipboard button is visible regardless of preflight styles.
In `@public/DataStructures/Trees/BFS`・DFS/leetcode/87. Scramble
String/GPT/README.html:
- Around line 1601-1605: The Prism copy-to-clipboard plugin is loaded via the
prism-copy-to-clipboard.min.js script but Tailwind's preflight can hide or
disable the copy button; update the existing Prism toolbar CSS (the rules around
the toolbar noted at lines 252-253) to include forced display/visibility rules
(e.g., display, visibility, pointer-events) with !important so the copy button
always appears and is interactive, ensuring the prism-copy-to-clipboard plugin
works as expected.
In `@public/JavaScript/2618`. Check if Object Instance of Class/Claude Code Sonnet
4.5/README_react.html:
- Around line 1844-1848: The Prism copy-to-clipboard button for light mode is
missing the !important overrides and can be hidden by Tailwind preflight; update
the README_react HTML to include the same forced CSS overrides used for dark
mode so the .code-toolbar / .toolbar button (and prism-copy-to-clipboard
elements) are explicitly shown in the default theme—add the !important rules for
visibility/display/positioning of .code-toolbar .toolbar and the copy button
(same selectors used for dark mode) in the stylesheet loaded by
README_react.html so the copy button cannot be suppressed by Tailwind preflight.
In `@public/JavaScript/2619`. Array Prototype Last/Claude Code Sonnet
4.5/README_react.html:
- Around line 13-15: The page currently only loads the Prism theme CSS
(href="https://github.com/vendor/prismjs/themes/prism-tomorrow.css") but later enables
copy-to-clipboard support; add links to the Prism toolbar and line-numbers CSS
(prism-toolbar.css and prism-line-numbers.css) after the theme link, then add a
small override stylesheet (or inline <style>) loaded last that uses !important
to force visibility/layout (e.g., rules targeting .prism-toolbar, .toolbar,
.toolbar .copy-to-clipboard, .copy-to-clipboard, .copy-button,
pre[class*="language-"], code[class*="language-"], and .line-numbers) to undo
Tailwind preflight (display:block/inline-block, z-index, pointer-events,
margin/padding as needed). Ensure the override is loaded after the other Prism
CSS files and apply the same change where copy-to-clipboard is also enabled
elsewhere in the file.
In `@public/JavaScript/2621`. Sleep/Claude Code Sonnet 4.5/README_react.html:
- Around line 505-510: The Prism copy-button is being hidden by Tailwind
preflight because the toolbar styles from Prism (e.g., the .code-toolbar and its
child selectors like .code-toolbar .toolbar and .code-toolbar .toolbar button or
.prism-copy-to-clipboard/.copy-to-clipboard) lack !important overrides; add a
small CSS file or block loaded after the Prism assets that re-applies the
toolbar styles with !important (target .code-toolbar, .code-toolbar .toolbar,
.code-toolbar .toolbar button, and the copy-to-clipboard class names used by
Prism) so the copy button is visible and layout-stable across pages.
In `@public/JavaScript/2622`. Cache With Time Limit/Claude Code Sonnet
4.5/README_react.html:
- Around line 968-969: Add an explicit CSS override (loaded after the Prism
scripts) that targets the prism-copy-to-clipboard toolbar button produced by the
prism-copy-to-clipboard plugin / prism-toolbar (e.g., the copy button selector
used by those plugins) and append !important to the rules that control display,
visibility, positioning and z-index so Tailwind Preflight cannot hide or alter
the button; ensure the override is placed after the <script
src="https://github.com/vendor/prismjs/plugins/toolbar/prism-toolbar.min.js"> and <script
src="https://github.com/vendor/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js">
includes so the !important rules take effect.
In `@public/JavaScript/2629`. Function Composition/Claude Code Sonnet 4.6
extended/README_react.html:
- Around line 39-42: The Prism copy-button styles under the .code-toolbar /
.code-toolbar .toolbar class definitions must be hardened with !important to
prevent Tailwind preflight from hiding or altering them; update the CSS rules
that style the copy button (the .code-toolbar, .code-toolbar .toolbar, and any
.toolbar-item or .copy-to-clipboard related selectors used with prism-toolbar /
prism-copy-to-clipboard) to append !important to display, position, opacity,
z-index and other critical properties so the copy button is always visible and
positioned correctly when vendoring prism-toolbar and prism-copy-to-clipboard.
In `@public/JavaScript/2630`. Memoize II/Claude Code Sonnet 4.6
extended/README_react.html:
- Line 18: The Prism copy-button CSS overrides are being defeated by Tailwind
preflight; update the Prism toolbar/button styles (the rules that target the
toolbar and .copy-to-clipboard / .toolbar button selectors referenced near the
current Line 55 region) to include !important on visibility, display,
positioning and sizing declarations so the copy button cannot be hidden or
restyled by preflight; ensure every rule that affects the copy button (toolbar,
.toolbar button, .copy-to-clipboard, and any ::before/::after used for the
button) uses !important and keep selectors matching the existing Prism classes
so the override applies consistently (also apply the same change for the other
affected block referenced at lines 2183–2187).
In `@public/Mathematics/Finite` State Machine/leetcode/65. Valid
Number/Claude/README.html:
- Around line 27-31: The Prism Autoloader plugin is included but not configured
with languages_path, so it may try to fetch languages from the CDN instead of
your local /vendor/prismjs/components/; update the Prism autoloader
configuration (where you initialize Prism Autoloader or include
prism-autoloader.min.js) to set Prism.plugins.autoloader.languages_path =
'/vendor/prismjs/components/'; or explicitly load required language components
(e.g., language-python) from /vendor/prismjs/components/ so Prism Autoloader
uses the local files rather than the CDN.
In `@public/Mathematics/Number` Theory/HackerRank/Easy/Primitive_Problem.html:
- Around line 1350-1354: Remove the duplicated Prism.js script block so Prism
and its plugins are only loaded once: delete one of the two identical script
groups that include "prism.js", "prism-python.min.js",
"prism-line-numbers.min.js", "prism-toolbar.min.js", and
"prism-copy-to-clipboard.min.js" and keep the other block (preserving the
original load order of prism and its plugins); ensure only a single set of those
script tags remains in the HTML to avoid double-initialization.
---
Outside diff comments:
In `@public/Algorithm/BinarySearch/leetcode/98`. Validate Binary Search
Tree/Claude Sonnet 4.5/README_react.html:
- Around line 44-71: The Prism.js toolbar CSS must explicitly override Tailwind
preflight by adding !important to the toolbar and button link rules; update the
selectors div.code-toolbar > .toolbar and div.code-toolbar > .toolbar
.toolbar-item > button, div.code-toolbar > .toolbar .toolbar-item > a (and the
hover rule for div.code-toolbar > .toolbar .toolbar-item > button) to include
!important on visibility/display-related and key styling properties (e.g., add
display: inline-block !important; opacity: 1 !important; and append !important
to background, border, padding, margin, color, box-shadow, and transition
declarations) so the toolbar and copy buttons are not hidden or reset by
Tailwind preflight.
In `@public/Algorithm/DynamicProgramming/leetcode/63`. Unique Paths
II/Claude/README.html:
- Around line 1848-1850: autoloaderがCDNを参照しているためvendoringと不整合が起きています — update
the Prism.plugins.autoloader.languages_path assignment so it points to the local
vendored components (e.g. "/vendor/prismjs/components/") instead of the CDN URL;
locate the Prism.plugins.autoloader.languages_path assignment and replace the
CDN string with the local path to match the earlier local imports of Prism
core/plugins from "/vendor/prismjs/".
In `@public/Algorithm/DynamicProgramming/leetcode/64`. Minimum Path
Sum/Claude/README.html:
- Around line 179-207: Update the Prism copy-button CSS to use !important
overrides so Tailwind preflight cannot hide or override it: add !important to
the properties in the selectors "div.code-toolbar > .toolbar .toolbar-item >
button, div.code-toolbar > .toolbar .toolbar-item > a" (background, border,
border-radius, padding, margin-top, margin-right, font, color, box-shadow,
transition) and also to the properties in "div.code-toolbar > .toolbar
.toolbar-item > button:hover" (transform, box-shadow, background) so the
copy-to-clipboard toolbar styling always wins over Tailwind preflight; make the
changes where the current Prism toolbar styles are defined (the div.code-toolbar
selector blocks).
In `@public/DataStructures/bit` manipulations/leetcode/89. Gray
Code/GPT/README.html:
- Around line 94-120: The Prism copy-button CSS lacks !important overrides and
Tailwind preflight can hide it; update the selector div.code-toolbar > .toolbar
.toolbar-item > button, div.code-toolbar > .toolbar .toolbar-item > a and its
hover rule (div.code-toolbar > .toolbar .toolbar-item > button:hover) to append
!important to the properties that Tailwind may override (at minimum background,
border, border-radius, padding, margin, color, box-shadow and any transition
declarations) so the Prism copy button styles always win and are not suppressed
by preflight.
In `@public/DataStructures/LinkedLists/leetcode/2`. Add Two
Numbers/Claude/README.html:
- Around line 20-31: The Prism toolbar copy-button styles risk being overridden
by Tailwind preflight; update the CSS for the Prism toolbar (selectors
.toolbar-item > button and .toolbar-item > a, and specifically the
copy-to-clipboard/toolbar plugin rules) to force the button styles by adding
!important to background, border, border-radius, padding, font
(font-size/font-family), color, and box-shadow declarations so the copy-button
remains visible and styled regardless of Tailwind overrides.
In `@public/DataStructures/LinkedLists/leetcode/86`. Partition
List/Claude/README.html:
- Around line 68-96: The Prism copy-button styles need an explicit display
override with !important to counter Tailwind preflight; update the selector
div.code-toolbar > .toolbar .toolbar-item > button (and similarly for any anchor
variant div.code-toolbar > .toolbar .toolbar-item > a) to include a display rule
such as "display: inline-flex !important;" (and ensure any visibility/opacity
defaults that could hide it are also forced if present), keeping the existing
hover rules intact.
In `@public/DataStructures/LinkedLists/other/DoublyLinkedList/GPT/README.html`:
- Around line 133-146: The .copy-btn CSS rules are being overridden by Tailwind
preflight; update the .copy-btn declaration so each property that controls
visibility/layout (at minimum position, top, right, background, color, border,
padding, border-radius, cursor, font-size, transition, z-index) uses !important
to force override (i.e., append !important to those property values in the
.copy-btn rule) so the Prism.js copy button remains visible and styled
correctly.
- Around line 856-864: The restore timer uses the stale nodes[1] reference after
container.removeChild, causing NotFoundError; instead, when inserting the new
node (in the second setTimeout) re-acquire the current child reference from
container (e.g., const currentNodes = container.children or container.childNodes
and use currentNodes[1] or container.children[index] as the insertBefore target)
or save a stable reference (like the nextSibling before removal) and use that;
update the code around container.removeChild and container.insertBefore to use
the live reference (container.children / nextSibling) and keep
status.textContent updates as-is.
In `@public/JavaScript/2626`. Array Reduce Transformation/Claude Code Sonnet 4.5
extended/README_react.html:
- Around line 64-86: The Prism copy-button styles are being overridden by
Tailwind preflight; update the button rule(s) for the selector div.code-toolbar
> .toolbar > .toolbar-item > button (and its hover rule div.code-toolbar >
.toolbar > .toolbar-item > button:hover) to append !important to the properties
that affect visibility and layout (at minimum
display/opacity/right/top/background/color/padding/border-radius/border/cursor/font-weight/transition
and hover transform/box-shadow/background) so the copy-to-clipboard toolbar
cannot be hidden or styled away; apply the same !important fixes to the
duplicate rule block referenced later (the block around lines noted in the
comment).
In `@public/Mathematics/Fundamentals/HackerRank/Claude/Easy/Halloween`
party/Halloween_party.html:
- Around line 31-45: The HTML references many Prism assets (e.g., prism.js,
components/prism-python.min.js, plugins/line-numbers/prism-line-numbers.* ,
plugins/toolbar/prism-toolbar.* ,
plugins/copy-to-clipboard/prism-copy-to-clipboard.* and
themes/prism-tomorrow.css) that are missing from vendor/prismjs; either populate
vendor/prismjs with the required files (download the core prism.js, the python
component, and the plugins' JS/CSS files and keep the path structure used in the
<script> and <link> tags) or remove/comment out these <script> and <link> tags
in Halloween_party.html so the page no longer references missing assets and the
code highlighting will not attempt to load non-existent files.
In `@public/Mathematics/Number` Theory/HackerRank/Easy/Primitive_Problem.html:
- Around line 33-34: HTML 内で同じコメントが重複しています — 削除対象はコメント文字列 "<!-- React & ReactDOM
-->" と "<!-- Babel Standalone -->"
です。該当する重複行のうち一方を削除してコメントを一意にし、他の部分(同じ文字列がある箇所)に影響が出ないことを確認してください(ファイル内の重複するコメント文字列を探して片方だけ残す)。
| <link | ||
| rel="stylesheet" | ||
| href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css" | ||
| href="/vendor/prismjs/themes/prism-tomorrow.css" |
There was a problem hiding this comment.
Prism の copy button 用 override がガイドライン未達です。
copy-to-clipboard を読み込むなら、Line 55 以降の toolbar/button スタイルも !important で固定する必要があります。今のままだと Tailwind preflight に負けて、copy button が非表示または崩れた状態になるページが出ます。
💡 修正例
.code-toolbar > .toolbar {
position: absolute;
top: 0.5rem;
right: 0.5rem;
- opacity: 0;
+ opacity: 0 !important;
transition: opacity 0.3s ease-in-out;
}
.code-toolbar:hover > .toolbar {
- opacity: 1;
+ opacity: 1 !important;
}
.code-toolbar > .toolbar .toolbar-item button,
.code-toolbar > .toolbar .toolbar-item .copy-to-clipboard-button {
- background: `#10b981`;
- color: white;
+ display: inline-block !important;
+ visibility: visible !important;
+ opacity: 1 !important;
+ background: `#10b981` !important;
+ color: white !important;
border-radius: 6px;
padding: 0.5rem 1rem;
margin-right: 0.5rem;
margin-top: 0.5rem;
font-size: 1rem;
- border: none;
- cursor: pointer;
- box-shadow: none;
+ border: none !important;
+ cursor: pointer !important;
+ box-shadow: none !important;
transition: background 0.2s;
}As per coding guidelines, "Prism.js copy button styling must use !important CSS overrides to prevent Tailwind preflight from hiding the element".
Also applies to: 2183-2187
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@public/JavaScript/2630`. Memoize II/Claude Code Sonnet 4.6
extended/README_react.html at line 18, The Prism copy-button CSS overrides are
being defeated by Tailwind preflight; update the Prism toolbar/button styles
(the rules that target the toolbar and .copy-to-clipboard / .toolbar button
selectors referenced near the current Line 55 region) to include !important on
visibility, display, positioning and sizing declarations so the copy button
cannot be hidden or restyled by preflight; ensure every rule that affects the
copy button (toolbar, .toolbar button, .copy-to-clipboard, and any
::before/::after used for the button) uses !important and keep selectors
matching the existing Prism classes so the override applies consistently (also
apply the same change for the other affected block referenced at lines
2183–2187).
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
gh issue create \
--repo myoshi2891/Algorithm-DataStructures-Math-SQL \
--title "Prism copy button が Tailwind preflight に負けて非表示になる問題 (2630. Memoize II)" \
--assignee myoshi2891 \
--body "## 概要
PR `#322` のコードレビュー中に、\`public/JavaScript/2630. Memoize II/Claude Code Sonnet 4.6 extended/README_react.html\` にて、Prism.js の copy button 用 CSS override が \`!important\` を使用していないため、Tailwind CSS の preflight によってボタンが非表示になったり崩れたりする可能性があることが指摘されました。
## 関連リンク
- PR: https://github.com/myoshi2891/Algorithm-DataStructures-Math-SQL/pull/322
- レビューコメント: https://github.com/myoshi2891/Algorithm-DataStructures-Math-Study/pull/322#discussion_r2917303562
- リクエスト者: `@myoshi2891`
## 問題の詳細
\`CLAUDE.md\` のアーキテクチャガイドラインでは「Prism.js の copy button スタイリングは Tailwind preflight による非表示を防ぐために \`!important\` CSS override を使用すること」と規定されています。
現在の \`.code-toolbar > .toolbar\` および \`.code-toolbar > .toolbar .toolbar-item button\` のスタイルに \`!important\` が付与されておらず、Tailwind preflight の \`button\` リセットルールにより copy button が意図しない見た目になる可能性があります。
## 修正方針
以下のプロパティに \`!important\` を追加する:
- \`.code-toolbar > .toolbar\` の \`opacity: 0\`
- \`.code-toolbar:hover > .toolbar\` の \`opacity: 1\`
- \`.toolbar-item button\` / \`.copy-to-clipboard-button\` の \`display\`, \`visibility\`, \`opacity\`, \`background\`, \`color\`, \`border\`, \`cursor\`, \`box-shadow\`
## 影響範囲
同ファイル内の対象スタイルブロック(約 Line 55 付近および Line 2183–2187 付近)。
"
Length of output: 74
@myoshi2891 イシューを作成しました 🎉
👉 #323
public/JavaScript/2630. Memoize II/Claude Code Sonnet 4.6 extended/README_react.html の Prism copy button CSS に !important が不足している問題として、@myoshi2891 にアサインして登録しました。
🧠 Learnings used
Learnt from: myoshi2891
Repo: myoshi2891/Algorithm-DataStructures-Math-SQL PR: 290
File: JavaScript/2630. Memoize II/Claude Code Sonnet 4.6 extended/README_react.html:2062-2066
Timestamp: 2026-02-23T03:22:09.013Z
Learning: JavaScript/2630. Memoize II/Claude Code Sonnet 4.6 extended/README_react.html では、ステップビジュアライゼーションのレイアウト比率として `1fr:3fr` が意図的に使用されている。これは図表エリアにより多くのスペース(75%)を割り当てるためであり、他のファイルの `1fr:2fr` とは異なる設計判断である。
Learnt from: myoshi2891
Repo: myoshi2891/Algorithm-DataStructures-Math-SQL PR: 311
File: public/Mathematics/Fundamentals/HackerRank/Claude/Easy/Halloween party/Halloween_party.html:225-226
Timestamp: 2026-02-27T04:52:11.348Z
Learning: In the public HTML assets (e.g., public/**/README_react.html and other HTML files), follow the architecture specified in CLAUDE.md: React 18 UMD + Babel Standalone. Browser-side JSX transpilation is an intentional design choice and currently affects ~90 files; migrating to a production build pipeline should be considered separately. Review public HTML files for JSX usage and ensure they align with this setup, documenting any deviations.
Learnt from: myoshi2891
Repo: myoshi2891/Algorithm-DataStructures-Math-SQL PR: 311
File: Mathematics/Fundamentals/HackerRank/Claude/Easy/Halloween party/Halloween_party.html:0-0
Timestamp: 2026-02-27T04:52:03.549Z
Learning: Follow the CLAUDE.md architecture: use React 18 UMD + Babel Standalone for HTML-based README_react.html style files. This pattern applies across HTML files (approx. 90 files). Do not flag Babel Standalone usage in HTML files, as it is an intentional design decision documented in the repository.
Learnt from: CR
Repo: myoshi2891/Algorithm-DataStructures-Math-SQL PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-02-28T07:04:24.693Z
Learning: Applies to **/*README*.html : Prism.js copy button styling must use !important CSS overrides to prevent Tailwind preflight from hiding the element
Learnt from: myoshi2891
Repo: myoshi2891/Algorithm-DataStructures-Math-SQL PR: 311
File: Mathematics/Fundamentals/HackerRank/Claude/Easy/Halloween party/Halloween_party.html:17-43
Timestamp: 2026-02-27T04:52:05.995Z
Learning: Do not require or add Subresource Integrity (SRI) attributes in HTML files for resources that are dynamically generated or processed by the build. In this repo, generate_index.py removes integrity attributes for any HTML tags referencing /vendor/ during the public build, and Tailwind CDN and Google Fonts do not support SRI. Therefore, SRI attributes are not effective for these sources; rely on the build script behavior and use SRI only where the generation process preserves or requires it.
1. LeetCode 83: Remove Duplicates from Sorted List の新規追加 (
1d9db06)public/ディレクトリ配下へ成果物を生成しました。2. UIアクセシビリティ改善と Rust 実装のリファクタリング (
6b5b387)/vendor/パス(React, Babel, Prism.js 等)へ変更。aria-labelやaria-currentを追加し、アクセシビリティを向上。matches!マクロを使用したより Rust らしい簡潔な記述にリファクタリングしました。3. マルチドメイン(Algorithm, JS, SQL)の同期と修正 (
8b3644e)2627. DebounceのREADME.mdを更新。1164. Product Price at a Given Dateの UI と Pandas 実装を更新。1174. Immediate Food Delivery IIの UI をプロジェクト標準に合わせて更新。generate_index.pyを実行し、全ドメインの変更をpublic/index.htmlに反映しました。1.
6ffa54f: 構造化とアクセシビリティの基礎対応.idxmax()を採用し、最新価格の取得を2.
3487276: レビュー指摘への対応と実装の深化DebounceおよびThrottleの Python 実装にて、スレッドセーフを確保するためにthreading.Lockを導入しました。これにより、複数のスレッドから同時に呼び出された際の競合状態(Race Condition)を防止しています。role="tablist"やaria-selectedなどの WAI-ARIA 属性を付与しました。1.
97db7cc: 実行制御と並列処理の洗練asyncio版にinspect.isawaitableを導入し、より広範なコルーチンオブジェクトへの互換性を確保しました。throttle実装にて Lock の保持時間を最小化するようにリファクタリングし、パフォーマンスを改善しました。2.
e651db1: 可視化ロジックの精密化3.
b10c6c9: 堅牢性とアクセシビリティの最終調整time.time()からtime.monotonic()に変更しました。これにより、システム時刻の変更(NTP 同期や手動設定など)の影響を受けない、より堅牢な時間計測が可能になりました。aria-label="実装言語"を付与し、スクリーンリーダー等の支援技術におけるコンテキストの提供を強化しました。1. LeetCode #83 可視化ステップの精密化
currentポインタが実際に次のノードへ移動する挙動を独立したステップとして見せることで、ループ内のポインタ更新ロジックをより直感的に理解できるように改善しました。2. 静的アセットのローカル化(Prism.js)
1. 実行ロジックの修正 (Throttle)
throttle実装でlast_callをtime.monotonic()で初期化していたため、最初の呼び出しが「前回の呼び出しから時間が経過していない」と判定され、ブロックされていました。last_callを0.0で初期化するように変更しました。これにより、初回の呼び出しが即座に(期待通りに)実行されるようになりました。2. UIの安定性向上 (LeetCode 83 可視化)
5.5(小数)を使用していたため、React側でstepsData[activeStep - 1](整数インデックス)を参照した際にundefinedとなり、ナビゲーションが壊れる不具合がありました。3. アセット管理の最適化 (Prism.js)
/vendor/パスに書き換えるルールを追加しました。README_React.htmlを直接修正し、Prism JSを最初からプロジェクト内の/vendor/パスを参照するように変更しました。今回の修正の目的は、Prism.js プラグインのファイル命名規則の統一と、それに伴うプロジェクト全体の整合性確保です。
1. 命名規則の変更と統一
node_modulesから提供される Prism.js のプラグイン(Line Numbers, Toolbar等)は、ローカル環境では.jsファイルとして管理されていますが、CDN経由では.min.jsとして参照されることが一般的です。.min.js) をローカルアセット (.js) へ正しくマッピングするように修正しました。2. ソースファイルの修正 (LeetCode 83)
/vendor/パスに書き換えたスクリプトタグを、新しいルールに合わせて.min.jsから.js(/vendor/prismjs/plugins/line-numbers/prism-line-numbers.js等)に修正しました。これにより、ソースファイル単体での読み込み整合性も確保されています。3. プロジェクト全体の同期
public/ディレクトリ配下の 140以上のHTMLファイルすべてにこの新しいパスルールを適用しました。git statusがクリーンな状態でリモート(dev-from-macmini)にプッシュされました。