You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As part of #130 we shipped export-time name shortening and a first-class TalkGroup.abbreviation field — optional operator override used at the export boundary when “Use talk-group abbreviations” is enabled. See name-shortening.md.
The same pattern is needed for the channel name qualifier (Channel.name), so operators can set a shorter label for export without polluting the canonical name.
Problem
Expanded export names compose callsign + name (+ mode / talk-group suffixes). Operators often need to shorten the qualifier (name) while keeping the full logical name in the project. Today only generic shortening heuristics apply; there is no per-channel override analogous to TalkGroup.abbreviation.
Scope
Model
Add optional Channel.abbreviation?: string on Channel (schema bump from v13).
Vendor-neutral field — same semantics as TalkGroup.abbreviation: export label only, not an internal FK, not import identity.
Applies to channel.name only. channel.callsign is a separate concern and continues to be abbreviated automatically by the existing shortening pipeline (e.g. callsign-suffix downgrade, dictionary, vowel-squeeze) — nocallsign.abbreviation field in this ticket.
Export integration
Wire into the channel-expansion / name-shortening path (src/lib/channelExpansion/) — early substitution of the name qualifier when composing export wire names, before generic dictionary / vowel-squeeze / truncate steps (mirror TG abbreviation placement in the pipeline).
Respect a new export-time toggle (e.g. useChannelAbbreviation on ExportOptions / useExportSettings, default on when shortening is enabled — align with TG toggle behaviour).
When enabled and channel.abbreviation is set, use it in place of channel.name for composeChannelWireName (and downstream zone / TG-list member consistency).
Callsign portion of the composed wire name is unchanged by this field.
UI
Surface
Behaviour
Channels → Edit
Abbreviation text input below Name; description that it is used when export names are shortened. Show auto-generated suggestions from channel.name at 6, 8, 10, 12 char targets (reuse shortenWireName — same pattern as talkGroupAbbreviationSuggestions).
Channels → Detail
Show abbreviation when set (mirror talk-group detail).
Channels → List
Hideable Abbreviation column (add to CHANNEL_OPTIONAL_COLUMNS; bump column schema version).
Import & export / Settings
Toggle for “Use channel abbreviations” alongside existing talk-group toggle.
Context
As part of #130 we shipped export-time name shortening and a first-class
TalkGroup.abbreviationfield — optional operator override used at the export boundary when “Use talk-group abbreviations” is enabled. See name-shortening.md.The same pattern is needed for the channel name qualifier (
Channel.name), so operators can set a shorter label for export without polluting the canonical name.Problem
Expanded export names compose
callsign+name(+ mode / talk-group suffixes). Operators often need to shorten the qualifier (name) while keeping the full logical name in the project. Today only generic shortening heuristics apply; there is no per-channel override analogous toTalkGroup.abbreviation.Scope
Model
Channel.abbreviation?: stringonChannel(schema bump from v13).TalkGroup.abbreviation: export label only, not an internal FK, not import identity.channel.nameonly.channel.callsignis a separate concern and continues to be abbreviated automatically by the existing shortening pipeline (e.g. callsign-suffix downgrade, dictionary, vowel-squeeze) — nocallsign.abbreviationfield in this ticket.Export integration
Wire into the channel-expansion / name-shortening path (
src/lib/channelExpansion/) — early substitution of the name qualifier when composing export wire names, before generic dictionary / vowel-squeeze / truncate steps (mirror TG abbreviation placement in the pipeline).useChannelAbbreviationonExportOptions/useExportSettings, default on when shortening is enabled — align with TG toggle behaviour).channel.abbreviationis set, use it in place ofchannel.nameforcomposeChannelWireName(and downstream zone / TG-list member consistency).UI
Abbreviationtext input below Name; description that it is used when export names are shortened. Show auto-generated suggestions fromchannel.nameat 6, 8, 10, 12 char targets (reuseshortenWireName— same pattern astalkGroupAbbreviationSuggestions).CHANNEL_OPTIONAL_COLUMNS; bump column schema version).Storage / CRUD
codeplugStoragemigration (followTalkGroup.abbreviationslice from Exported channel names from m×n expansion overflow tight radio LCD limits #130).Docs / tests
Out of scope
Channel.callsignmanual abbreviation field (automatic only).CodeplugProject— #122.channel.nameon export.Reference implementation
Mirror the #130 talk-group slice:
TalkGroup.abbreviation—src/models/codeplug.tstalkGroupAbbreviationSuggestions—src/lib/talkGroupAbbreviationSuggestions.tsTalkGroupEdit.tsx,TalkGroupsList.tsx,TalkGroupDetail.tsxsrc/lib/channelExpansion/index.ts,useExportSettings.ts,ExportNameSettingsFields.tsxManual verify
nameandabbreviationset → export wire name uses abbreviation in the qualifier position; callsign unchanged.nameused (subject to generic shortening).nameunchanged; wire names may differ (same round-trip caveat as Exported channel names from m×n expansion overflow tight radio LCD limits #130).Related