Skip to content

feat: sidebar UI addon#23

Open
daniel-jones-dev wants to merge 8 commits intomainfrom
feat/sidebar-ui-addon
Open

feat: sidebar UI addon#23
daniel-jones-dev wants to merge 8 commits intomainfrom
feat/sidebar-ui-addon

Conversation

@daniel-jones-dev
Copy link
Member

Introduces a sidebar with options and a button to translate the selected cell. Improves usability, and gets rid of the re-translation issue.

daniel-jones-dev and others added 2 commits March 17, 2026 14:00
Replaces the formula-based workflow with a sidebar that writes static
values directly, so cells are never re-translated when the sheet is
reopened.

New features:
- Sidebar UI (DeepLSidebar.html) with setup screen for first-time API
  key entry and main translation screen
- Source/target language, formality (Default/Formal/Informal with
  prefer_more/prefer_less), context, and glossary ID options
- All options saved and restored automatically via Script Properties
- Usage bar showing current billing period consumption, color-coded at
  75% (amber) and 90% (red); refreshed after each translation
- Billed characters displayed in translation success message; all cells
  batched into a single API request using show_billed_characters=true
- API key validated on save by calling /v2/usage; last 4 chars shown in
  collapsible Settings section with option to clear
- Loading indicator on sidebar open
- DeepL menu with Open sidebar and About items added via onOpen()
- Version shown in sidebar footer and DeepL → About dialog
- enableFormulaFunctions = false opt-in flag; DeepLTranslate() and
  DeepLUsage() throw a descriptive error when unset, directing users to
  FORMULA_FUNCTIONS.md

Docs:
- README rewritten as sidebar-focused with concise setup (Option A
  template / Option B manual), usage options table, and updating
  instructions folded into Option B
- FORMULA_FUNCTIONS.md created with full function reference, cost
  warning, and re-translation workarounds

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@daniel-jones-dev
Copy link
Member Author

After approval, need to update links to raw files (to point at main) and make a template sheet accessible to public.

daniel-jones-dev and others added 6 commits March 20, 2026 14:15
…ise into collapsible sections

- Add style_id, custom_instructions (textarea, up to 10 lines) and
  model_type (Default / Quality / Speed) fields
- Pass all translation options as a single object to the backend
- Persist and restore all new options via Script Properties
- Reorganise main screen into two collapsible <details> sections:
  Options (open by default: formality, context, custom instructions)
  Advanced (collapsed: glossary ID, style ID, model)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…PI options

Sections:
- Options (open): formality, context
- Customization (collapsed): glossary ID, style rule ID, custom instructions
- Advanced (collapsed): model, extra API options

New features:
- Source and target language dropdowns now include an "Other (enter code)…"
  option that reveals a free-text input for any DeepL language code;
  saved values not in the dropdown are automatically restored to the input
- Extra API options textarea in Advanced (key=value per line); parsed and
  merged into the JSON body at translation time; saved/restored via
  Script Properties

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
All language tag option values now follow BCP-47: language subtags
lowercase, region subtags uppercase (e.g. en-US, pt-BR, zh). Updated
FORMALITY_LANGS set to match; removed the toUpperCase() coercion from
getLangValue since the dropdown values and the set entries now agree.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Auto-detect format: if the value starts with '{' it is parsed as JSON
and merged into the request body; otherwise the existing key=value
line format is used. Invalid JSON surfaces a clear error message.
Updated placeholder and hint text to document both formats.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…k, remove dead code; update README options table

- Validate that target language code is non-empty when 'Other' is
  selected, surfacing a clear error before the API call
- Make FORMALITY_LANGS check case-insensitive (.toLowerCase()) so
  custom codes like 'DE' or 'PT-BR' match correctly
- Remove unused getSelectionCount() function
- Expand README options table to cover all three sections (Options,
  Customization, Advanced) including new fields added in 0.4.0

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant