Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion .github/assets/release-body.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Includes:

- Scripture Forge Auto Drafts Extension
- Scripture Forge Draft Generation Extension

Tested on Platform.Bible vX.Y.Z. Expected to be compatible with at least vX.Y.\*.

Expand Down
40 changes: 38 additions & 2 deletions src/scripture-forge/contributions/localizedStrings.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,46 @@
{
"metadata": {},
"metadata": {
"%mainMenu_scriptureForge_openAutoDrafts_label%": {
"deprecationInfo": {
"message": "Replaced with %mainMenu_scriptureForge_openGeneratedDrafts_label%",
"date": "2026-01-08"
}
},
"%scriptureForge_draft_action_cannotAccessDrafts%": {
"deprecationInfo": {
"message": "Replaced with %scriptureForge_draft_action_cannotAccessDrafts_2%",
"date": "2026-01-08"
}
},
"%scriptureForge_drafts_title%": {
"deprecationInfo": {
"message": "Replaced with %scriptureForge_drafts_title_2%",
"date": "2026-01-08"
}
},
"%scriptureForge_login_page_title%": {
"deprecationInfo": {
"message": "Replaced with %scriptureForge_login_page_title_2%",
"date": "2026-01-08"
}
},
"%webView_scriptureForge_editor_title_format%": {
"deprecationInfo": {
"message": "Replaced with %webView_scriptureForge_editor_title_format_2%",
"date": "2026-01-08"
}
}
},
"localizedStrings": {
"en": {
"%mainMenu_scriptureForge_openAutoDrafts_label%": "Open Auto Drafts",
"%mainMenu_scriptureForge_openGeneratedDrafts_label%": "Open generated drafts",
"%project_settings_scriptureForge_group1_label%": "Scripture Forge Project Settings",
"%project_settings_scriptureForge_projectId_label%": "Scripture Forge Project ID",
"%project_settings_scriptureForge_projectId_description%": "This project's ID according to Scripture Forge. It is generated upon connecting a project to Scripture Forge. This is distinct from the project's ID according to Paratext. Empty means the project is not connected to Scripture Forge.",
"%scriptureForge_draft_action_canJoin%": "Join project",
"%scriptureForge_draft_action_cannotAccessDrafts%": "Ask your administrator for access to Auto Drafts.",
"%scriptureForge_draft_action_cannotAccessDrafts_2%": "Ask your administrator for access to generate drafts.",
"%scriptureForge_draft_action_cannotSetUp%": "Ask your administrator to connect this project to Scripture Forge.",
"%scriptureForge_draft_action_canSetUp%": "Connect",
"%scriptureForge_draft_action_connected_generate%": "Generate",
Expand All @@ -27,13 +60,15 @@
"%scriptureForge_draft_viewer_header_description_md%": "This AI-generated pre-translation contains errors. [Open in Scripture Forge]({scriptureForgeProjectGenerateDraftUrl})",
"%scriptureForge_draft_viewer_header_title%": "AI-generated",
"%scriptureForge_drafts_title%": "Auto Drafts",
"%scriptureForge_drafts_title_2%": "Generated Drafts",
"%scriptureForge_home_description_md%": "This extension allows you to use limited features of Scripture Forge:\n\n- View the list of projects you can see in Scripture Forge\n- Open drafts that have already been generated by AI for a project in Scripture Forge\n\n{loginContent}\n\nAn administrator must connect a project in Scripture Forge and generate an AI draft\nbefore you can interact with it in this extension.\n\nVisit [Scripture Forge]({scriptureForgeUrl}) to access\nits full set of features.",
"%scriptureForge_home_failed_login_check_format%": "Scripture Forge failed to determine if you are logged in. {errorMessage}",
"%scriptureForge_home_failed_login_format%": "Scripture Forge failed to log in. {errorMessage}",
"%scriptureForge_home_failed_logout_format%": "Scripture Forge failed to log out. {errorMessage}",
"%scriptureForge_home_login_action_label%": "Log in",
"%scriptureForge_home_logout_action_label%": "Log out",
"%scriptureForge_login_page_title%": "Auto Drafts",
"%scriptureForge_login_page_title_2%": "Generated Drafts",
"%scriptureForge_login_page_subtitle%": "Scripture Forge extension",
"%scriptureForge_logo_alt_text%": "Scripture Forge Logo",
"%scriptureForge_overline_title%": "Scripture Forge",
Expand All @@ -42,7 +77,8 @@
"%settings_scriptureForge_serverConfiguration_label%": "Targeted Servers",
"%settings_scriptureForge_serverConfiguration_validation_error_preset%": "Server configuration preset name must be one of {presetNames}",
"%settings_scriptureForge_serverConfiguration_validation_error_wrongFormat%": "Custom configuration must follow the `ServerConfiguration` type in the `scripture-forge` extension",
"%webView_scriptureForge_editor_title_format%": "{projectId} (Auto Draft)"
"%webView_scriptureForge_editor_title_format%": "{projectId} (Auto Draft)",
"%webView_scriptureForge_editor_title_format_2%": "{projectId} (generated draft)"
}
}
}
6 changes: 3 additions & 3 deletions src/scripture-forge/contributions/menus.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
"groups": {},
"items": [
{
"label": "%mainMenu_scriptureForge_openAutoDrafts_label%",
"localizeNotes": "Application main menu > Project > Open Auto Drafts",
"label": "%mainMenu_scriptureForge_openGeneratedDrafts_label%",
"localizeNotes": "Application main menu > Project > Open generated drafts",
"group": "platform.projectResources",
"order": 1002,
"command": "scriptureForge.openAutoDrafts"
"command": "scriptureForge.openGeneratedDrafts"
}
]
},
Expand Down
19 changes: 13 additions & 6 deletions src/scripture-forge/src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ export async function activate(context: ExecutionActivationContext) {
// #region set up Slingshot PDPF

// Exclude the Slingshot PDPF from being included in the Home projects list since drafts need
// to be opened from Auto Drafts page for now in order to include the header and border. Also
// to be opened from draft generation page for now in order to include the header and border. Also
// we don't keep track of which projects have drafts in a way that Home could not list those
// without drafts
const excludePDPFIdsInHome = await papi.settings.get(
Expand Down Expand Up @@ -231,13 +231,19 @@ export async function activate(context: ExecutionActivationContext) {

// #endregion

const openGeneratedDraftsFunction = async () => {
return papi.webViews.openWebView(SCRIPTURE_FORGE_HOME_WEB_VIEW_TYPE, { type: 'tab' });
};

/** @deprecated Jan 8 2026. Use `scriptureForge.openGeneratedDrafts` instead. */
const openAutoDraftsCommandPromise = papi.commands.registerCommand(
'scriptureForge.openAutoDrafts',
async () => {
return papi.webViews.openWebView(SCRIPTURE_FORGE_HOME_WEB_VIEW_TYPE, {
type: 'tab',
});
},
openGeneratedDraftsFunction,
);

const openGeneratedDraftsCommandPromise = papi.commands.registerCommand(
'scriptureForge.openGeneratedDrafts',
openGeneratedDraftsFunction,
);

if (realTimeCollaborativeEditingEnabled) {
Expand All @@ -261,6 +267,7 @@ export async function activate(context: ExecutionActivationContext) {
await isLoggedInCommandPromise,
await slingshotPdpefPromise,
await openAutoDraftsCommandPromise,
await openGeneratedDraftsCommandPromise,
);

// #region first startup actions - disabled for now since this extension is bundled into the app
Expand Down
7 changes: 7 additions & 0 deletions src/scripture-forge/src/types/scripture-forge.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -446,9 +446,16 @@ declare module 'papi-shared-types' {
/**
* Opens a new Scripture Forge home web view and returns the WebView id
*
* @deprecated Jan 8 2026. Use `scriptureForge.openGeneratedDrafts` instead.
* @returns WebView id for new Scripture Forge home WebView or `undefined` if not created
*/
'scriptureForge.openAutoDrafts': () => Promise<string | undefined>;
/**
* Opens a new Scripture Forge home web view and returns the WebView id
*
* @returns WebView id for new Scripture Forge home WebView or `undefined` if not created
*/
'scriptureForge.openGeneratedDrafts': () => Promise<string | undefined>;
}

export interface ProjectDataProviderInterfaces {
Expand Down
Loading