Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
f65496c
Allow user to define their own segment boundaries
alex-rawlings-yyc Jun 22, 2026
bade6e9
"Prevent" verse zero from being included (currently broken, pushing s…
alex-rawlings-yyc Jun 24, 2026
ba196ee
Draw hard boundary at verse-0 segments
alex-rawlings-yyc Jun 24, 2026
a4f41f8
Update user questions document
alex-rawlings-yyc Jun 24, 2026
439807f
Fix formatting issue
alex-rawlings-yyc Jul 2, 2026
009da57
Remove the verse-0 hard-wall guards from the segmentation model
alex-rawlings-yyc Jul 2, 2026
f2f2bb3
Fix boundary edits not re-rendering the view
alex-rawlings-yyc Jul 2, 2026
b3355d8
Label segments with a per-chapter number and contained verse range
alex-rawlings-yyc Jul 2, 2026
964564b
Add straddled-phrase detection and an event-time phrase-link getter
alex-rawlings-yyc Jul 2, 2026
adf8888
Replace the boundary-edit mode with always-available controls
alex-rawlings-yyc Jul 2, 2026
8d79504
Keep focus and scroll stable across boundary edits
alex-rawlings-yyc Jul 2, 2026
d60ed58
Update user questions for the reworked boundary editing
alex-rawlings-yyc Jul 2, 2026
a05ca88
Fix code-review findings across segmentation persistence and boundary
alex-rawlings-yyc Jul 6, 2026
7b4be0d
Letter split-verse labels and resolve navigation by verse containment
alex-rawlings-yyc Jul 6, 2026
2fd26d4
Use SegmentLabel type in Interlinearizer test
alex-rawlings-yyc Jul 7, 2026
c90b481
Renamed adjacentSegment to boundarySegment for clarity
alex-rawlings-yyc Jul 7, 2026
3505710
Fix lint error
alex-rawlings-yyc Jul 7, 2026
520f565
Normalize empty segmentation delta to default in autosave
alex-rawlings-yyc Jul 7, 2026
04151e9
Fix segment-boundary review findings
alex-rawlings-yyc Jul 8, 2026
7ead0ef
Add updatedAt timestamp to interlinear projects (#138)
alex-rawlings-yyc Jul 8, 2026
a73380a
Refresh cached updatedAt after metadata edits and overwrites
alex-rawlings-yyc Jul 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions __mocks__/lucide-react.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -84,3 +84,33 @@ export function Settings(props: Readonly<{ size?: number; className?: string }>)
export function Plus(props: Readonly<{ size?: number; className?: string }>): ReactElement {
return <svg data-testid="plus-icon" {...props} />;
}
/**
* Stub for the FoldVertical icon used by the row-gap merge control (join two stacked rows).
*
* @param props - SVG props forwarded from the component.
* @returns A ReactElement SVG element used as a vertical-merge icon stub in tests.
*/
export function FoldVertical(props: Readonly<{ className?: string }>): ReactElement {
return <svg data-testid="fold-vertical-icon" {...props} />;
}

/**
* Stub for the FoldHorizontal icon used by the continuous-strip merge control (join two adjacent
* segments).
*
* @param props - SVG props forwarded from the component.
* @returns A ReactElement SVG element used as a horizontal-merge icon stub in tests.
*/
export function FoldHorizontal(props: Readonly<{ className?: string }>): ReactElement {
return <svg data-testid="fold-horizontal-icon" {...props} />;
}

/**
* Stub for the Scissors icon used by the split boundary control.
*
* @param props - SVG props forwarded from the component.
* @returns A ReactElement SVG element used as a split icon stub in tests.
*/
export function Scissors(props: Readonly<{ size?: number; className?: string }>): ReactElement {
return <svg data-testid="scissors-icon" {...props} />;
}
7 changes: 6 additions & 1 deletion contributions/localizedStrings.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,10 @@
"%interlinearizer_morphemeGloss_label%": "Gloss for morpheme {form}",
"%interlinearizer_tokenChip_editMorphemes%": "Edit morpheme breakdown for {token}",
"%interlinearizer_tokenChip_defineMorphemes%": "Define morpheme breakdown for {token}",
"%interlinearizer_linkButton_crossSegmentDisabledTooltip%": "Cross-segment phrases are not supported. This link button is outside the current segment.",
"%interlinearizer_linkButton_crossSegmentDisabledTooltip%": "Only a free edge token of an adjacent segment can be linked across a boundary.",
"%interlinearizer_boundaryControl_merge%": "Merge segments",
"%interlinearizer_boundaryControl_split%": "Split segment here",
"%interlinearizer_boundaryControl_formerBoundary%": "Former verse boundary",

"%interlinearizer_modal_create_title%": "Create Interlinear Project",
"%interlinearizer_modal_create_name_label%": "Name (optional)",
Expand All @@ -62,6 +65,7 @@
"%interlinearizer_modal_metadata_description_label%": "Description",
"%interlinearizer_modal_metadata_description_placeholder%": "e.g. Token-level English glosses",
"%interlinearizer_modal_metadata_created_label%": "Created",
"%interlinearizer_modal_metadata_modified_label%": "Modified",
"%interlinearizer_modal_metadata_source_label%": "Source Project",
"%interlinearizer_modal_metadata_analysis_language_label%": "Analysis Language",
"%interlinearizer_modal_metadata_language_placeholder%": "e.g. en",
Expand All @@ -78,6 +82,7 @@
"%interlinearizer_modal_select_name_unnamed%": "Unnamed",
"%interlinearizer_modal_select_info_button_label%": "Project info",
"%interlinearizer_modal_select_active_badge%": "Active",
"%interlinearizer_modal_select_modified_prefix%": "Modified",
"%interlinearizer_modal_select_create_new%": "Create New",
"%interlinearizer_modal_select_cancel%": "Cancel",

Expand Down
1 change: 1 addition & 0 deletions cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
"recentering",
"recenters",
"relayout",
"resegment",
"resnap",
"sandboxed",
"scriptio",
Expand Down
Loading
Loading