Repository navigation
Feature: per-gap pause length editing in the timeline #501
Description
Activity
First a few thoughts and corrections:
- Pauses longer than 0.4s already render a
quater_resticon. - The document format contains the
V3ArtificialSilenceitem, which renders as silence / black video. - Freeze Frames / Slow Motion do not seem like a good idea and would require changes to the document format.
- especially reusing the same clip again and again seems like a horrible idea. why would you want to see a freeze frame from much earlier in the source at a random later pause?
- I'm not sure about the UX of this and whether this will be needed much, but I'm open to trying an implementation and seeing how it feels (but first see the general comments below)
- Alt+→ / Alt+← don't fit our existing keyboard shortcut scheme
- deleting a gap is already possible via selecting the item + pressing delete, not sure we need another ui item for that
- if there is a same-source item after the non_text-item, there should be an intuitive way to extend the non_text item only until the start of the next item in the source (i.e. that the non_texts
sourceStart+lengthis equal to the following itemssourceStart). - rendering pauses with a different size depending on the length of it is something we decided against, i don't think this feature would change that
- a low opacity element probably won't work a11y-wise (plus we already have a break icon)
General Comments:
This is you second issue within less than an hour. Both issues feel strongly AI-generated and contain wrong factual statements (in this example that silences render as plain whitespace, for which you also linked the wrong file). While I cannot say for sure that they were, I'm assuming so until proven otherwise.
The Vegan Bug Bakery has a strict policy on AI use (tl;dr: just don't). Since we only adopted it recently, it wasn't already added to the audapolis repo, but will soon (#502).
Please respect this policy when filing any more issues or opening a PR. Violations will not be tolerated.
- Pauses longer than 0.4s already render a
The core idea of adding ui for pause editing (especially for creating/modifying
artificial_silence-items) is good and something we wanted to add to audapolis for a long time (thats one reason whyartificial_silence-items even exist). However it has to be implemented in a way that matches the existing software and the expectation of its users.As this issue probably violates our ai-policy, I'll close it for now. Feel free to open a new issue which conforms to this policy (i.e. one you completely wrote yourself) or correct me if this assumption is wrong.
We do not accept any contributions that were generated partly or in whole using generative AI (e.g. LLMs).
This includes but is not limited to issues, pull requests, code, documentation and artwork.Really ?
The previous issues submitted was read end edited by myself before to be posted. I am not familiar with this policy, for me it sound like : "we only accept keyboard issues, if you use your mouse, you are not a real dev"
Thanks for confirming my suspicion. I understand that you were not familiar with the policy, that's why I added it to this repo and pointed you to it. This is not something we will discuss at this point.
- locked as resolved and limited conversation to collaborators
on May 19, 2026
Context
document.jsonalready models inter-word pauses asnon_textcontent items with alengthfield (and implicit gaps viasourceStart/lengtharithmetic between adjacentworditems in the same source). The data is editable, but there is currently no UI affordance:non_textitems render as plain whitespace inapp/src/pages/Editor/Document.tsx, so users can't see or adjust individual pause durations.Per-gap editing inline in the transcript is a high-leverage pacing feature — it lets editors tighten or stretch individual pauses without leaving the text view or re-recording.
Proposal
Make each meaningful
non_textitem (e.g.length > 0.15s, threshold configurable) render as a small interactive chip inline between words. Clicking it opens a popover with:−/+nudge buttons,Keyboard parity:
Alt+→/Alt+←to nudge the selected/hovered gap by 50ms.Visual polish (optional, high impact): render the chip's width proportional to
lengthso pacing issues are visible at a glance without playback.Implementation sketch
Redux action in
app/src/state/editor/edit.ts:Integrates with existing redux-undo so it's undoable for free.
Expansion handling. Two cases:
Underlying source has unused runway after
sourceStart + length→ just extendlength. Video continues naturally.No runway → behavior depends on source type:
silencesource (ffmpeg -f lavfi -i anullsrc), added once with a reserved key.ffmpeg -loop 1 -i frame.png -f lavfi -i anullsrc -t <len> -c:v libx264 -tune stillimage -pix_fmt yuv420p hold.mp4from the last frame atsourceStart + originalLength. Standard "held pause" look.ffmpeg -i source.mp4 -ss <t-Δ> -t Δ -filter:v "setpts=<factor>*PTS" -filter:a "atempo=1/<factor>" slow.mp4. Useful for emphasis pauses where complete freeze feels too static.One hold/slow clip per source, reused for later expansions on the same source to bound zip growth.
Renderer. New
GapChipcomponent rendered from the document item renderer whenitem.type === 'non_text' && item.length > threshold. Default styling subtle (low opacity, brightens on hover) to avoid visual noise.Scope
Offer
Happy to implement as a PR if maintainers are interested. Open questions: