Skip to content

enhance(ai): add selectable caption writing styles - #36

Merged
rschlaefli merged 1 commit into
release/2.0.0-uzhfrom
rs/trypost-writing-styles
Oct 25, 2026
Merged

rschlaefli merged 1 commit into
release/2.0.0-uzhfrom
rs/trypost-writing-styles

Conversation

@rschlaefli

@rschlaefli rschlaefli commented Oct 25, 2026 •

Copy link
Copy Markdown
Member

The caption assistant now offers Default and DF writing styles independently of the model. Both use concise natural-writing guidance in the original request; DF adds an optional instance-owned guide. The selection applies to generation, regeneration and existing rewrites, with explicit Insert/Replace acceptance.

DF is configured through AI_DF_STYLE_PATH. The server accepts only a bounded UTF-8 local guide and returns a field error for unavailable styles before contacting a provider. Default remains available without the file. No new dependency or schema change.

Screenshots

Caption model and writing style

Default and DF within the existing caption assistant.

  • Source revision: 7fdb003
  • Captured: 2026-10-25
  • Environment: Local Laravel/Pest application, Chromium 1.61.1, synthetic accounts and fake AI responses
  • Viewports: 1280x900, 390x844
  • Locales: en, de

Screenshots record visual state at capture time; they do not by themselves establish that an interaction works.

Interaction checks

  • Five native browser cases passed with 72 assertions: model/style independence, generate/regenerate/rewrite, busy/error preservation, explicit insert/replace, draft save/reload, and fresh-composer Default.

Warnings

AI responses are local test fakes; live provider style quality has not been evaluated.

English

State Desktop Compact
Style choices Style choices, en, desktop.
label: Style choices
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: en
viewport: 1280x900
screenshot note: Style choices in the local caption assistant.
Style choices, en, compact.
label: Style choices
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: en
viewport: 390x844
screenshot note: Style choices in the local caption assistant.
Default on entry Default on entry, en, desktop.
label: Default on entry
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: en
viewport: 1280x900
screenshot note: Default on entry in the local caption assistant.
Default on entry, en, compact.
label: Default on entry
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: en
viewport: 390x844
screenshot note: Default on entry in the local caption assistant.
Model options with DF selected Model options with DF selected, en, desktop.
label: Model options with DF selected
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: en
viewport: 1280x900
screenshot note: Model options with DF selected in the local caption assistant.
Model options with DF selected, en, compact.
label: Model options with DF selected
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: en
viewport: 390x844
screenshot note: Model options with DF selected in the local caption assistant.
Request in progress Request in progress, en, desktop.
label: Request in progress
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: en
viewport: 1280x900
screenshot note: Request in progress in the local caption assistant.
Request in progress, en, compact.
label: Request in progress
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: en
viewport: 390x844
screenshot note: Request in progress in the local caption assistant.
Generated suggestion Generated suggestion, en, desktop.
label: Generated suggestion
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: en
viewport: 1280x900
screenshot note: Generated suggestion in the local caption assistant.
Generated suggestion, en, compact.
label: Generated suggestion
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: en
viewport: 390x844
screenshot note: Generated suggestion in the local caption assistant.
Failure preserves the draft Failure preserves the draft, en, desktop.
label: Failure preserves the draft
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: en
viewport: 1280x900
screenshot note: Failure preserves the draft in the local caption assistant.
Failure preserves the draft, en, compact.
label: Failure preserves the draft
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: en
viewport: 390x844
screenshot note: Failure preserves the draft in the local caption assistant.
Accepted draft after reload Accepted draft after reload, en, desktop.
label: Accepted draft after reload
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: en
viewport: 1280x900
screenshot note: Accepted draft after reload in the local caption assistant.
Accepted draft after reload, en, compact.
label: Accepted draft after reload
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: en
viewport: 390x844
screenshot note: Accepted draft after reload in the local caption assistant.

German

State Desktop Compact
Style choices Style choices, de, desktop.
label: Style choices
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: de
viewport: 1280x900
screenshot note: Style choices in the local caption assistant.
Style choices, de, compact.
label: Style choices
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: de
viewport: 390x844
screenshot note: Style choices in the local caption assistant.
Default on entry Default on entry, de, desktop.
label: Default on entry
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: de
viewport: 1280x900
screenshot note: Default on entry in the local caption assistant.
Default on entry, de, compact.
label: Default on entry
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: de
viewport: 390x844
screenshot note: Default on entry in the local caption assistant.
Model options with DF selected Model options with DF selected, de, desktop.
label: Model options with DF selected
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: de
viewport: 1280x900
screenshot note: Model options with DF selected in the local caption assistant.
Model options with DF selected, de, compact.
label: Model options with DF selected
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: de
viewport: 390x844
screenshot note: Model options with DF selected in the local caption assistant.
Request in progress Request in progress, de, desktop.
label: Request in progress
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: de
viewport: 1280x900
screenshot note: Request in progress in the local caption assistant.
Request in progress, de, compact.
label: Request in progress
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: de
viewport: 390x844
screenshot note: Request in progress in the local caption assistant.
Generated suggestion Generated suggestion, de, desktop.
label: Generated suggestion
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: de
viewport: 1280x900
screenshot note: Generated suggestion in the local caption assistant.
Generated suggestion, de, compact.
label: Generated suggestion
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: de
viewport: 390x844
screenshot note: Generated suggestion in the local caption assistant.
Failure preserves the draft Failure preserves the draft, de, desktop.
label: Failure preserves the draft
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: de
viewport: 1280x900
screenshot note: Failure preserves the draft in the local caption assistant.
Failure preserves the draft, de, compact.
label: Failure preserves the draft
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: de
viewport: 390x844
screenshot note: Failure preserves the draft in the local caption assistant.
Accepted draft after reload Accepted draft after reload, de, desktop.
label: Accepted draft after reload
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: de
viewport: 1280x900
screenshot note: Accepted draft after reload in the local caption assistant.
Accepted draft after reload, de, compact.
label: Accepted draft after reload
Current screenshot; source revision: 7fdb003
captured: 2026-10-25
locale: de
viewport: 390x844
screenshot note: Accepted draft after reload in the local caption assistant.

Screenshots document the recorded visual states.

Validation: 112 affected backend tests passed (529 assertions); the unreadable-file case is skipped locally when run as root. Five native browser cases passed (72 assertions), covering English/German desktop/compact flows, independent model/style changes, busy and error behavior, insert/replace, save/reload and fresh-composer Default. Pint, Prettier, ESLint, Vue type checking and production asset build passed.

Opengrep found no issue in the changed PHP files but partially parsed the agent's PHP syntax; focused source review covers that limitation. The commit hygiene hook used its documented override for an unchanged commented placeholder in .env.example; the staged-diff secret scan passed.

Backend and browser CI and code quality CI passed the current head. Focused source review and the integrated Opus 5.5 review passed with no findings. Merged into the fork release branch and included in v2.0.0-uzh.4. The companion instance configuration is tracked in its deployment repository; operational verification is recorded privately.

@rschlaefli
rschlaefli marked this pull request as ready for review October 25, 2026 15:23
Copilot AI balanced review requested due to automatic review settings October 25, 2026 15:23
@rschlaefli
rschlaefli merged commit ed39460 into release/2.0.0-uzh Oct 25, 2026
10 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants