# v1.0.0
Full rewrite and rebrand from DisplayTags.
New multi-module architecture, new packet system, new API.
---
## Added
- **Multi-module architecture** — split into Sign-API (git submodule) and Sign-Paper
- **Developer API** — `SignAPI`, `INametag`, `INametagManager` for programmatic nametag control
- **Per-viewer overrides** — `setLines(Player, List<String>)` to show different nametags per viewer
- **Global overrides** — `setLines(List<String>)` to override nametag for all viewers
- **SignReloadEvent** — Bukkit event fired after `/sign reload`
- **Conditional lines** — `<condition:'%placeholder%'>text</condition>` tag syntax
- **Blank line hiding** — lines that resolve to empty (after stripping colors) are hidden automatically
- **Support crouching** — nametag opacity lowers and see-through disables when sneaking
- **Condense holograms** — option to use one text display per line for tighter backgrounds
- **Packet bundling** — all packets for a nametag update are sent together via `sendPacketSilently`
- **Dirty checking** — text and sneak state are cached; packets only sent when something changes
- **Config version migration** — automatic v0 to v1 migration (seconds to ticks, new options)
- **Profile refresh detection** — nametags re-mount automatically when a player's profile is refreshed (e.g. nicking)
- **Version updater** — console log and op notification when a newer version is available on Lodestone
---
## Changed
- **Package** — `me.itsskeptical.displaytags` to `gg.lode.sign`
- **Plugin name** — DisplayTags to Sign
- **Permission** — `displaytags.admin` to `lodestone.sign.admin`
- **Commands** — custom command framework replaced with CommandAPI (shaded and relocated)
- **Packets** — PacketEvents now shaded and relocated (no longer a required external dependency)
- **Update interval** — now in ticks instead of seconds (default: 20)
---
## Removed
- Custom command framework (`CommandGroup`, `Subcommand`)
- Modrinth-based `UpdateChecker` (replaced by `VersionUpdater`)
- External PacketEvents dependency (now shaded)
- `{prefix}` placeholder from message helper