Skip to content

Commit 61732e0

Browse files
henderkesclaude
andcommitted
Add a ToolboxPath component + use it on three high-impact doc pages
Search is good at finding *what* a feature does, but the doc text rarely tells the reader *where in Toolbox's ImGui interface to actually find the control* — so somebody who searches for "move items to storage with ctrl+click" still has to hunt through the in-game Settings window. Adds a small inline annotation component that renders the breadcrumb path through Toolbox's UI down to the exact button, checkbox, or chat command. No border or background by default so it reads as a quiet footnote next to the prose rather than a callout that hijacks the page. Three doc kinds are now covered as worked examples: * items.md -> items.mdx — settings-window checkboxes (the user's original example: Settings > Inventory Settings > Move items from/to storage with Control+Click, plus the salvage/identify Ctrl+Click toggles and the Item Filter window). * chatfilter.md -> chatfilter.mdx — settings with informal sub-sections (Drops / Announcements / Warnings / Others) and a representative ToolboxPath per group. Also corrects an existing inaccuracy: the section header is "Chat Settings", not "Chat Filter", since that's what SettingsName() returns. * camera.md -> camera.mdx — chat commands (kind="command"), since Camera has no settings panel; the controls are all typed. The component is built so other docs can opt in one bullet at a time without converting the whole file's tone: <ToolboxPath steps={[ 'Settings', 'Inventory Settings', 'Move items from/to storage with Control+Click' ]} /> <ToolboxPath kind="command" steps={['/cam unlock']} /> <ToolboxPath kind="hotkey" steps={['Hotkeys', 'Add', '...']} /> Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent d4a26a5 commit 61732e0

7 files changed

Lines changed: 249 additions & 119 deletions

File tree

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
---
2+
/**
3+
* Inline annotation that tells a reader where in the live Toolbox UI to
4+
* find the control or feature being described. Render with a list of
5+
* breadcrumb steps from the top-level entry point down to the leaf
6+
* control. The last step is emphasised because it's the actual button,
7+
* checkbox, or hotkey label the user is looking for.
8+
*
9+
* Examples:
10+
* <ToolboxPath steps={['Settings', 'Inventory Settings',
11+
* 'Move items from/to storage with Control+Click']} />
12+
* <ToolboxPath kind="hotkey"
13+
* steps={['Hotkeys', 'Add', 'Pcons: Toggle active set']} />
14+
* <ToolboxPath kind="command" steps={['/dmg report']} />
15+
*
16+
* Styling is deliberately minimal — no border or background by default.
17+
* It should read as a quiet "here's where this lives" footnote next to
18+
* the prose, not a callout that hijacks the page.
19+
*/
20+
21+
type Kind = 'settings' | 'window' | 'widget' | 'hotkey' | 'command';
22+
23+
interface Props {
24+
/** Ordered breadcrumb steps; the last is the actual control label. */
25+
steps: string[];
26+
/** What kind of UI path this is. Picks the leading glyph. */
27+
kind?: Kind;
28+
}
29+
30+
const { steps, kind = 'settings' } = Astro.props;
31+
32+
const glyphs: Record<Kind, string> = {
33+
settings: '',
34+
window: '',
35+
widget: '',
36+
hotkey: '',
37+
command: '›_',
38+
};
39+
const labels: Record<Kind, string> = {
40+
settings: 'Find in Toolbox settings',
41+
window: 'Find in Toolbox window',
42+
widget: 'Find in Toolbox widget',
43+
hotkey: 'Bind in Toolbox hotkeys',
44+
command: 'Chat command',
45+
};
46+
---
47+
48+
<span class="tb-path" data-kind={kind} role="note" aria-label={labels[kind]}>
49+
<span class="tb-path-icon" aria-hidden="true">{glyphs[kind]}</span>
50+
{steps.map((step, i) => (
51+
<>
52+
{i > 0 && <span class="tb-path-sep" aria-hidden="true">›</span>}
53+
<span class={i === steps.length - 1 ? 'tb-path-leaf' : 'tb-path-step'}>{step}</span>
54+
</>
55+
))}
56+
</span>
57+
58+
<style>
59+
.tb-path {
60+
display: inline-flex;
61+
align-items: baseline;
62+
flex-wrap: wrap;
63+
gap: 0.15rem 0.3rem;
64+
font-size: 0.85em;
65+
line-height: 1.4;
66+
color: var(--color-fg-meta);
67+
}
68+
.tb-path-icon {
69+
color: var(--color-accent-deep);
70+
font-size: 0.85em;
71+
}
72+
.tb-path[data-kind='command'] .tb-path-icon {
73+
font-family: var(--font-mono);
74+
letter-spacing: -0.05em;
75+
}
76+
.tb-path-step {
77+
color: var(--color-fg-sub);
78+
}
79+
.tb-path-sep {
80+
color: var(--color-fg-faint);
81+
}
82+
.tb-path-leaf {
83+
color: var(--color-accent);
84+
font-weight: 500;
85+
}
86+
/* When the prose stylesheet wraps us in <li>, keep our left-edge
87+
aligned with the bullet text. */
88+
:global(.prose li) > .tb-path {
89+
margin-top: 0.2rem;
90+
}
91+
</style>

site/src/content/docs/camera.md

Lines changed: 0 additions & 25 deletions
This file was deleted.

site/src/content/docs/camera.mdx

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
title: "Camera"
3+
section: features
4+
---
5+
6+
import ToolboxPath from '../../components/ToolboxPath.astro';
7+
8+
Toolbox includes several features that interact with the game's camera, letting you view the world from perspectives the vanilla client doesn't allow. All camera functions are driven by [chat commands](/docs/commands/) — there's no setting panel, so the annotations below show the exact command to type.
9+
10+
## Camera Unlock
11+
12+
Free the camera from your character so you can fly it around the map.
13+
14+
<ToolboxPath kind="command" steps={['/cam unlock']} /> &nbsp; or &nbsp; <ToolboxPath kind="command" steps={['/camera unlock']} />
15+
16+
To re-attach the camera to your character:
17+
18+
<ToolboxPath kind="command" steps={['/cam lock']} /> &nbsp; or &nbsp; <ToolboxPath kind="command" steps={['/camera lock']} />
19+
20+
## Movement
21+
22+
While the camera is unlocked:
23+
24+
- **Horizontal axis**`W` (forward), `E` / `D` (strafe right), `S` (backward), `Q` / `A` (strafe left).
25+
- **Vertical axis**`Z` (up), `X` (down).
26+
- Hold the **right mouse button** to pan and tilt with the mouse.
27+
- Press `R` for auto-forward; press `W` or `S` to cancel.
28+
29+
## Other features
30+
31+
Toggle fog rendering:
32+
33+
<ToolboxPath kind="command" steps={['/cam fog on']} /> &nbsp; / &nbsp; <ToolboxPath kind="command" steps={['/cam fog off']} />
34+
35+
Adjust how fast the unlocked camera moves (default 100):
36+
37+
<ToolboxPath kind="command" steps={['/cam speed 200']} />
38+
39+
[back](./)

site/src/content/docs/chatfilter.md

Lines changed: 0 additions & 58 deletions
This file was deleted.
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
---
2+
title: "Chat Filter"
3+
section: features
4+
---
5+
6+
import ToolboxPath from '../../components/ToolboxPath.astro';
7+
8+
The Chat Filter module in GWToolbox++ controls which messages appear in your chat window. You can suppress different message categories to reduce clutter and focus on what matters.
9+
10+
All filters live under <ToolboxPath steps={['Settings', 'Chat Settings']} />, grouped into the sub-sections below. Each bullet is the literal checkbox label you'll find in the panel.
11+
12+
## Features
13+
14+
### Drops
15+
16+
- A rare item drops for you / an ally
17+
- A common item drops for you / an ally
18+
- An ally picks up a rare / common item
19+
- You pick up a rare / common item
20+
21+
<ToolboxPath steps={['Settings', 'Chat Settings', 'Drops', 'A rare item drops for you']} />
22+
23+
> "Rare" stands for a gold-name item, Ecto, Obsidian Shard, or Lockpick. "Common" is everything else.
24+
25+
### Announcements
26+
27+
- Guild Announcement
28+
- Hall of Heroes winners
29+
- Favor of the Gods announcements
30+
- 'You have been playing for…'
31+
- 'Player x has achieved title…'
32+
- 'You gain x faction'
33+
34+
<ToolboxPath steps={['Settings', 'Chat Settings', 'Announcements', 'Hall of Heroes winners']} />
35+
36+
### Warnings
37+
38+
Suppress the most common spam messages: "Unable to use item", "Invalid target", "Inventory is full", "Item already identified", "Not enough Adrenaline/Energy", "Opening chests".
39+
40+
<ToolboxPath steps={['Settings', 'Chat Settings', 'Warnings', "'Inventory is full'"]} />
41+
42+
### Others
43+
44+
Skill points, PvP balance messages, 9 Rings, Lunar fortunes, challenge mission scores, "No one hears you", away replies, salvaging spam, ashes-dropped, targetting messages.
45+
46+
### Custom filters
47+
48+
Hide any message that contains specific words or phrases.
49+
50+
- Enter words or phrases, one per line.
51+
- Matching is case-insensitive substring by default, or full regex if "Use regular expressions" is enabled.
52+
- Optionally scope the filter to specific chat channels (Local, Guild, Team, Trade, Alliance, Emotes).
53+
54+
<ToolboxPath steps={['Settings', 'Chat Settings', 'Hide any messages containing:']} />
55+
56+
### Hide messages by author
57+
58+
Block specific players' messages outright.
59+
60+
<ToolboxPath steps={['Settings', 'Chat Settings', 'Hide any messages from:']} />
61+
62+
### Channel logging
63+
64+
Stop the game from logging messages from chat channels you've turned off (chat history isn't unlimited).
65+
66+
<ToolboxPath steps={['Settings', 'Chat Settings', 'Block messages from inactive chat channels']} />
67+
68+
## Advanced filtering
69+
70+
For more complex needs, tick **Use regular expressions** and treat each line of the custom-filter list as a regex pattern.
71+
72+
Examples:
73+
74+
- `^Player.*joined the game\.` — every "Player has joined the game" message.
75+
- `\b(rare|unique|gold)\b` — any message containing the words *rare*, *unique*, or *gold*.
76+
77+
Test your patterns first — a too-broad regex will quietly eat messages you wanted to see.
78+
79+
[back](./)

site/src/content/docs/items.md

Lines changed: 0 additions & 36 deletions
This file was deleted.

site/src/content/docs/items.mdx

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
---
2+
title: "Item Management Features"
3+
section: widgets
4+
---
5+
6+
import ToolboxPath from '../../components/ToolboxPath.astro';
7+
8+
GWToolbox++ provides several advanced item management features to enhance your gameplay experience. These features are designed to streamline inventory management, improve item filtering, and provide convenient shortcuts for common item-related tasks.
9+
10+
## Inventory Manager
11+
12+
The Inventory Manager module offers the following functionality:
13+
14+
- **Ctrl+Click to move between inventory and storage**: hold Ctrl and click an item to send it to storage (or back to your inventory if the storage pane is open).
15+
<ToolboxPath steps={['Settings', 'Inventory Settings', 'Move items from/to storage with Control+Click']} />
16+
- **Move to the currently open storage pane**: when the option above is on, Toolbox can prefer the pane you have open instead of any free slot.
17+
<ToolboxPath steps={['Settings', 'Inventory Settings', 'Move items to current open storage pane on click']} />
18+
- **Materials to the open storage pane**: same idea, scoped specifically to materials so you can still consolidate ectos / shards into the materials pane.
19+
<ToolboxPath steps={['Settings', 'Inventory Settings', 'Move materials to current open storage pane on click']} />
20+
- **Auto-Salvage**: Ctrl+Click a salvage kit to open the Salvage All window for every salvageable item of a chosen rarity.
21+
<ToolboxPath steps={['Settings', 'Inventory Settings', 'Salvage All with Control+Click']} />
22+
- **Auto-Identify**: Ctrl+Click an identification kit to identify everything in the selected bags.
23+
<ToolboxPath steps={['Settings', 'Inventory Settings', 'Identify All with Control+Click']} />
24+
- **Pick which bags to salvage from**: tick only the bags you want the bulk operations to consider.
25+
<ToolboxPath steps={['Settings', 'Inventory Settings', 'Salvage from: Backpack / Belt Pouch / Bag 1 / Bag 2']} />
26+
- **Right-click context menu**: extra options on items in inventory or storage (move stack, identify, salvage, send to merchant).
27+
- **Trade improvements**: when offering an item in a trade window, Toolbox can automatically offer the full stack instead of one unit.
28+
29+
## Item Filter
30+
31+
The Item Filter module controls which item drops appear in the game world. Configure it in <ToolboxPath kind="window" steps={['Settings', 'Item Filter']} />.
32+
33+
- **Rarity-based filtering** — hide or show drops by rarity (white, blue, purple, gold, green) independently for items you can pick up and items reserved for party members.
34+
- **Custom exceptions** — name items that should always be shown regardless of rarity, so a rare drop you're farming for never gets hidden by a broad rule.
35+
36+
## Merchant window
37+
38+
You can also hide specific items from the merchant's *Sell* window so you don't accidentally vendor them. <ToolboxPath steps={['Settings', 'Inventory Settings', 'Merchant hidden items…']} />
39+
40+
These features combine to provide a powerful suite of tools for managing your items more efficiently in Guild Wars.

0 commit comments

Comments
 (0)