diff --git a/site/index.html b/site/index.html index f1ba7ee..24e15c3 100644 --- a/site/index.html +++ b/site/index.html @@ -87,12 +87,14 @@ .tear-off { display: flex; + height: 1in; /* Fixed height for consistency */ padding: 5px; border: 1px dashed #000; font-size: 10px; box-sizing: border-box; page-break-inside: avoid; align-items: flex-start; + overflow: hidden; } .tear-off-text { @@ -143,11 +145,19 @@ margin-bottom: 10px; font-size: 24px; letter-spacing: 2px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + width: 100%; } .distribute { font-size: 18px; letter-spacing: 6px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + width: 100%; } .redacted { @@ -155,15 +165,15 @@ } .message { - flex: 1; + height: 6in; /* Fixed height to prevent footer push-out */ margin-top: 10px; font-size: 14px; line-height: 1.4; text-align: left; - overflow-wrap: break-word; + overflow: hidden; display: flex; flex-direction: column; - justify-content: flex-end; + justify-content: flex-start; white-space: pre-wrap; box-sizing: border-box; position: relative; diff --git a/voxvera/cli.py b/voxvera/cli.py index 7d3be36..549fc72 100644 --- a/voxvera/cli.py +++ b/voxvera/cli.py @@ -215,8 +215,8 @@ def interactive_update(config_path: str): "message": t("cli.init_name"), "name": "name", "default": data.get("name", ""), - "transformer": _len_transform(60), - "validate": _len_validator(60), + "transformer": _len_transform(31), + "validate": _len_validator(31), }, { "type": "input", @@ -231,24 +231,24 @@ def interactive_update(config_path: str): "message": t("cli.init_title"), "name": "title", "default": data.get("title", ""), - "transformer": _len_transform(60), - "validate": _len_validator(60), + "transformer": _len_transform(31), + "validate": _len_validator(31), }, { "type": "input", "message": t("cli.init_subtitle"), "name": "subtitle", "default": data.get("subtitle", ""), - "transformer": _len_transform(80), - "validate": _len_validator(80), + "transformer": _len_transform(27), + "validate": _len_validator(27), }, { "type": "input", "message": t("cli.init_headline"), "name": "headline", "default": data.get("headline", ""), - "transformer": _len_transform(80), - "validate": _len_validator(80), + "transformer": _len_transform(31), + "validate": _len_validator(31), }, ] data.update(prompt(meta_qs)) @@ -927,16 +927,16 @@ def manage_servers(): pass choices.append(Choice(s, label)) - choices.insert(0, Choice("create_new", "--- Create New Site/Flyer ---")) + choices.insert(0, Choice("create_new", t("cli.manage_create_new"))) if servers: - choices.append(Choice("start_all", "--- Start All Sites ---")) - choices.append(Choice("stop_all", "--- Stop All Sites ---")) - choices.append(Choice("export_all", "--- Export All Sites ---")) - choices.append(Choice("import_multiple", "--- Import Multiple Sites ---")) - choices.append(Choice(None, "Exit")) + choices.append(Choice("start_all", t("cli.manage_start_all"))) + choices.append(Choice("stop_all", t("cli.manage_stop_all"))) + choices.append(Choice("export_all", t("cli.manage_export_all"))) + choices.append(Choice("import_multiple", t("cli.manage_import_multiple"))) + choices.append(Choice(None, t("cli.manage_exit"))) selected = inquirer.select( - message="Select a server to manage (or Exit):", + message=t("cli.manage_select_server"), choices=choices ).execute() @@ -963,13 +963,13 @@ def manage_servers(): if url: results.append((s, url)) except Exception as e: - console.print(f"[red]Error starting {s}: {e}[/red]") + console.print(f"[red]{t('cli.manage_startup_summary')}: {e}[/red]") if results: - console.rule("Startup Summary") + console.rule(t("cli.manage_startup_summary")) for s, url in results: console.print(f"[green]✔ {s}: [bold]{url}[/bold][/green]") - inquirer.confirm(message="Press Enter to continue", default=True).execute() + inquirer.confirm(message=t("cli.manage_press_enter"), default=True).execute() continue if selected == "stop_all": @@ -988,14 +988,14 @@ def manage_servers(): running = is_server_running(selected) action_choices = [ - Choice("toggle", "Stop" if running else "Start"), - Choice("export", "Export to Zip"), - Choice("delete", "Delete"), - Choice(None, "Back") + Choice("toggle", t("cli.manage_action_toggle_stop") if running else t("cli.manage_action_toggle_start")), + Choice("export", t("cli.manage_action_export")), + Choice("delete", t("cli.manage_action_delete")), + Choice(None, t("cli.manage_action_back")) ] action = inquirer.select( - message=f"Manage {selected}:", + message=t("cli.manage_action_menu", name=selected), choices=action_choices ).execute() @@ -1011,7 +1011,7 @@ def manage_servers(): elif action == "export": export_site(selected) elif action == "delete": - confirm = inquirer.confirm(message=f"Are you sure you want to delete {selected}?").execute() + confirm = inquirer.confirm(message=t("cli.manage_delete_confirm", name=selected)).execute() if confirm: delete_server(selected) diff --git a/voxvera/src/index-master.html b/voxvera/src/index-master.html index c64c8ba..7d22d27 100644 --- a/voxvera/src/index-master.html +++ b/voxvera/src/index-master.html @@ -87,12 +87,14 @@ .tear-off { display: flex; + height: 1in; /* Fixed height for consistency */ padding: 5px; border: 1px dashed #000; font-size: 10px; box-sizing: border-box; page-break-inside: avoid; align-items: flex-start; + overflow: hidden; } .tear-off-text { @@ -143,11 +145,19 @@ margin-bottom: 10px; font-size: 24px; letter-spacing: 2px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + width: 100%; } .distribute { font-size: 18px; letter-spacing: 6px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + width: 100%; } .redacted { @@ -155,15 +165,15 @@ } .message { - flex: 1; + height: 6in; /* Fixed height to prevent footer push-out */ margin-top: 10px; font-size: 14px; line-height: 1.4; text-align: left; - overflow-wrap: break-word; + overflow: hidden; display: flex; flex-direction: column; - justify-content: flex-end; + justify-content: flex-start; white-space: pre-wrap; box-sizing: border-box; position: relative;