Skip to content
Merged
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
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ This changelog is initialized from git commit history after `v1.0.0` and can be
- **Fast arbetsflödesrad överst i arbetsytan.** En smal, alltid synlig rad (`components/WorkflowBar.jsx`) visar de fem pipeline-stegen (Importera → Byt namn → Granska → Räkna → Gallra) i Lightroom-modulrads-stil, så flödet inte längre behöver letas fram i View-menyn eller på startsidan. Det aktiva steget markeras, en arbetsmapp-chip visar vilken mapp pipelinen är förankrad till (med sökväg och sättande steg i tooltip), en **Fortsätt →**-knapp tar dig till nästa steg med samma mapp, och en **Verktyg ▾**-meny samlar övriga vyer. Stegen och verktygen härleds ur en delad katalog (`workspace/flexlayout/workflowSteps.js`) som startsidan nu också använder, så de aldrig kan divergera. Raden kan stängas av via Inställningar → Layout → *Visa arbetsflödesrad* (på som standard). Nytt utvecklardokument [docs/dev/ux-principles.md](docs/dev/ux-principles.md) kodifierar navigerings- och stilreglerna bakom raden.

### Changed
- **Välkomstkortet visas nu bara första gången.** Startsidans välkomstkort visades tidigare vid varje icke-CLI-start; nu visas det bara den *första* gången appen öppnas i en normal session. En persistent flagga (`ansikten-welcomed` i localStorage, `workspace/welcomeFlag.js`) sätts när kortet avvisas **medan det faktiskt visas** — genom att öppna ett steg, ladda en bild, eller stänga det igen via menyn — och efterföljande starter går direkt in i arbetsytan med arbetsflödesraden synlig, utan kort. Logiken är fail-open åt visning: en saknad eller korrupt flagga räknas som "inte välkomnad än", så en genuin förstagångsanvändare får alltid guiden. CLI-starter (`willLaunch`) visar aldrig kortet, och eftersom kortet aldrig var synligt sätts flaggan inte heller där — en CLI-först-användare får därför fortfarande guiden vid sin första *normala* start. Flaggan styr **bara** kortet vid START ovanpå standardlayouten — stänger du alla öppna vyer visas kortet **ändå** (oberoende av flaggan) som fallback så arbetsytan aldrig blir en återvändsgränd, i ytan under den alltid synliga raden. Ny menypost **Hjälp → Visa välkomstguiden** (`show-welcome`) tar tillbaka kortet på begäran.
- **Startsidan är nu en ren välkomstsida.** När arbetsytan är tom visar startsidan bara en hälsning som pekar mot arbetsflödesraden — steggriden, verktygsgriden och **Fortsätt →**-raden som tidigare låg där är borttagna. Den alltid synliga arbetsflödesraden (`components/WorkflowBar.jsx`) äger nu all navigation och fortsättning (steg, arbetsmapp-chip, **Fortsätt →**, **Verktyg ▾**) och är den *enda* källan — raden syns även på tom arbetsyta, så dubbla **Fortsätt**-knappar (startsida + rad) från arbetsflödesrads-PR:en är därmed lösta. `StartupLanding` behöver inte längre backend-, moduleAPI- eller arbetsmapp-koppling. Kodregler i [docs/dev/ux-principles.md](docs/dev/ux-principles.md) (navigeringsregel 8).
- **"Fortsätt →" kedjar nu hela pipelinen och stegens hand-off-knappar är enhetliga.** Arbetsmapp-ankaret sätts nu även av Granska (när filkön laddar en mapp, `step: 'review'`) och Räkna spelare (när en räkning körs, `step: 'count'`), så **Fortsätt →** kan kedja `import → byt namn → granska → räkna → gallra` hela vägen i stället för bara `import → byt namn → granska`. De tidigare olika hand-off-knapparna mellan stegen (`Döp om filer…`, `Granska ansikten…`, `Gallra`) använder nu en enhetlig formulering — **Nästa steg: `<verb>` →** — som primär knapp. Adoption förblir alltid opt-in (en knapptryckning; ingen auto-load, ingen prenumerationsdriven modulbeteendeförändring — Räknas adopt-on-mount är oförändrad). Nya in-app-hand-off-event `open-count` (morphar till Räkna + `count-load`) och en moduleAPI-väg för `open-culling` så kedjans sista steg når Gallra.
- **Stegväxling omformar (morphar) nu arbetsytan i stället för att byggas om — och `Cmd+1`–`Cmd+5` byter arbetsflödessteg.** Att byta pipeline-steg (arbetsflödesraden, startsidan eller de nya `Cmd+1`–`Cmd+5`-genvägarna) transformerar den *levande* FlexLayout-modellen mot målsteget via `workspace/flexlayout/workspaceMorph.applyWorkspace` (deklarativa stegspecar i `workflows.js`), i stället för att ersätta modellen med `Model.fromJson`. Eftersom `Actions.moveNode` behåller en fliks node-id behåller React modulinstansen, så en modul som redan är igång **behåller sitt läge** över växlingen. `keepMounted`-moduler (filkön) och moduler med osparade ändringar (en "smutsig" Granska) **parkeras** levande i en hopfälld **Bakgrund**-kantflik i stället för att stängas. Följden: ett stegbyte är oförstörande och **frågar aldrig** om att kasta osparat — den enda kvarvarande destruktiva vägen är **Återställ layout** (`Cmd+Shift+L`), som ensam bygger om modellen och frågar först vid osparat. **Muskelminnesbrott:** `Cmd+1`–`Cmd+5` mappar nu till pipeline-stegen (Importera → Byt namn → Granska → Räkna → Gallra) i stället för de gamla layoutmallarna (Granskningsläge/Jämförelse/Helbild/Statistik/Köläge). De sekundära mallarna (Jämförelse, Helbild, Statistik) ligger kvar under **Fönster → Layoutmallar** utan kortkommando. De interna hjälparna `openModuleSolo`/`openLandingStep`/`ensureReviewSurface`/`ensureQueueMounted` är borttagna; alla CLI-/hand-off-vägar och filköns bildladdning går nu via `enterStep`. [docs/dev/ux-principles.md](docs/dev/ux-principles.md) uppdaterad (regel 3 är nu verklighet).
Expand All @@ -23,6 +24,8 @@ This changelog is initialized from git commit history after `v1.0.0` and can be

### Fixed
- **`Cmd+1`–`Cmd+5` (och andra `Cmd`/`Ctrl`/`Alt`-genvägar) fungerar nu även när Bildvisaren har fokus i Granska-steget.** Granskningsmodulens document-keydown är aktiv också över dess följeslagarpaneler (Bildvisare/Originalvy), och siffer- och bokstavsgenvägarna (`1`–`5`, `a`/`i`/`r`/`x`/`m`) matchade tidigare *utan* modifierare-vakt — så ett `Cmd+1` konsumerades av `preventDefault()` innan Electrons meny-accelerator hann fyra (stegväxlingen uteblev) och råkade dessutom välja ett ansiktsalternativ. Bara-tangent-genvägarna kräver nu att ingen av `Cmd`/`Ctrl`/`Alt` hålls (`useReviewKeyboard.js`), så modifierade tryck faller igenom till acceleratorn medan omodifierade tryck fortsatt utför granskningsåtgärden. `Shift+Cmd+A` (acceptera alla) har en egen gren och påverkas inte.
- **Hjälp → Tangentbordsgenvägar öppnar nu genvägsöversikten.** Menyposten (och dess `Cmd+/`-accelerator) skickade kommandot `show-keyboard-shortcuts`, men renderaren saknade en hanterare för det — kommandot föll igenom till en tyst `moduleAPI`-broadcast utan lyssnare, så menyposten var en no-op och bara `?`-tangenten kunde öppna översikten. Kommandot är nu wire:at i menykommandotabellen (`menuCommands.js`) till samma toggle som `?`-tangenten, så menyposten öppnar (och stänger) `ShortcutsHelp`-overlayn.
- **Arbetsflödesraden doldes av välkomstkortet vid start.** Startsidans välkomstkort (`StartupLanding`) renderades som en helskärmsoverlay (`position: fixed; inset: 0; z-index: 1000` — kvar sedan tiden före arbetsflödesraden) och lade sig därmed *över* den fasta arbetsflödesraden, så vid en normal start syntes bara kortet och raden var osynlig. Kortet renderas nu **inuti** layoutvärden (`.workspace-layout-host`, ytan under raden) med `position: absolute` och `z-index: var(--z-sticky)`, så raden alltid syns och är klickbar medan kortet visas. Modaler (Tangentbordsgenvägar, bekräftelsedialoger) ligger fortsatt ovanpå kortet (högre z-index / egna syskon till skalet).
- **CLI-lansering med en sökväg som expanderar till tomt strandar inte längre i default-layouten.** En syntaktiskt giltig men icke-matchande sökväg (t.ex. `ansikten culling /typo` eller en glob utan träffar) dolde tidigare startsidan (renderaren gissade från råa argumentantal) utan att öppna något, så användaren hamnade i default-layouten utan väg vidare. Huvudprocessen beräknar nu lanseringsbeslutet **efter** sökvägsexpansion (`src/main/launch-command.js`) och skickar ett explicit kommando även i tomfallet — `ansikten culling /typo` öppnar Gallra-vyn tom, en tom faces-expansion öppnar Granska tom — i stället för att renderaren gissar. Startsidans suppression styrs nu av den expanderade `willLaunch`-booleanen, inte av råa argumentantal.

## [1.7.0] - 2026-07-17
Expand Down
1 change: 1 addition & 0 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ deliverables, DoD) för en prestandarelease.
### UI/UX

- [ ] **`resolvePlacementTabset` ignorerar `getMaximizedTabset`** — en side-/bottom-modul som öppnas medan en tabset är maximerad dockar bakom den maximerade vyn (den nya panelen läggs i sin roll-tabset men syns inte förrän maximeringen släpps). Egen placeringsklass; åtgärdas i en senare placerings-PR. Nagelfar-fynd från #235, icke-blockerande.
- [ ] **Reviews `ArrowUp`/`ArrowDown`-grenar saknar bareKey-guard** — Cmd+Pil i Granska både stegar ansikte OCH swappar panel (dubbelfyr). Annan klass än #241:s accelerator-svällning eftersom panel-swappen är en renderer-handler, inte en meny-accelerator. Följd: lägg samma bareKey-guard på pilgrenarna om Cmd+Pil ska vara exklusivt panel-swap. Nagelfar-not från #241-granskningen.

---

Expand Down
19 changes: 19 additions & 0 deletions docs/dev/ux-principles.md
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,25 @@ These are hard rules for anyone adding or moving UI.
landing: the bar is present on the empty workspace too, so duplicating them
there only recreates the double-affordance problem.

The card **never covers the bar** and is **first-run-only at start**. It
renders inside the layout host (`.workspace-layout-host`, the area *below* the
bar) as an `absolute` fill, not a `fixed` viewport overlay — so the WorkflowBar
stays visible and clickable while the card is up (modals still paint above it).
A persistent flag (`ansikten-welcomed`, `workspace/welcomeFlag.js`) is set on
the first dismissal (open a step, load an image, or close it via the menu). The
flag governs **only** whether the card shows at START over the non-empty
default layout: first run shows it, later launches drop straight into the
workspace with no card. There are **two distinct triggers**, and the flag gates
only the first:
- **At start**, over the default layout — first-run-only (the flag).
- **Empty workspace** (every view closed) — the card returns
**unconditionally**, independent of the flag, so the workspace is never a
dead end. It fills the host under the always-visible bar.

The flag is fail-open toward showing (missing/corrupt → not yet welcomed), CLI
launches (`willLaunch`) never show it at start, and **Help ▸ "Visa
välkomstguiden"** (`show-welcome`) brings it back on demand.

---

## Style rules
Expand Down
15 changes: 9 additions & 6 deletions docs/user/workspace-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -261,13 +261,16 @@ Skriptet kräver att appen är installerad i `/Applications/Ansikten.app` (macOS

## Arbetsflöde

> **Startsida:** När appen startar utan filer i kön visas en enkel välkomstsida i
> arbetsytan — en hälsning som pekar dig mot **arbetsflödesraden** överst. All
> navigation sker i raden: stegen (**Importera · Byt namn · Granska · Räkna ·
> **Välkomstsida:** Allra första gången du öppnar appen visas en enkel
> välkomstsida i arbetsytan — en hälsning som pekar dig mot **arbetsflödesraden**
> överst. Den ligger *under* raden, så raden är synlig och klickbar hela tiden.
> All navigation sker i raden: stegen (**Importera · Byt namn · Granska · Räkna ·
> Gallra**), arbetsmapp-chippen, **Fortsätt →** och **Verktyg ▾**-menyn ligger
> alla där, alltid synliga — även med tom arbetsyta. Startsidan försvinner så
> fort du öppnar en vy eller laddar en bild, och **kommer tillbaka om du stänger
> alla öppna moduler** så arbetsytan aldrig blir tom utan väg vidare.
> alla där, alltid synliga — även med tom arbetsyta. Välkomstsidan försvinner så
> fort du öppnar en vy eller laddar en bild. Vid kommande starter visas den
> **inte automatiskt** (du går direkt in i arbetsytan), men **stänger du alla
> öppna vyer kommer den tillbaka** så arbetsytan aldrig blir tom utan väg vidare.
> Vill du se den när som helst: **Hjälp → Visa välkomstguiden**.
>
> **Fortsätt där du var:** har du nyss importerat eller bytt namn i ett event
> visar arbetsflödesraden en **Fortsätt →**-knapp till nästa steg med samma mapp
Expand Down
1 change: 1 addition & 0 deletions frontend/src/i18n/sv/menu.js
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ module.exports = {
"help": {
"title": "Hjälp",
"keyboardShortcuts": "Tangentbordsgenvägar",
"showWelcome": "Visa välkomstguiden",
"documentation": "Dokumentation",
"userGuide": "Användarguide",
"reportIssue": "Rapportera problem",
Expand Down
6 changes: 6 additions & 0 deletions frontend/src/main/menu.js
Original file line number Diff line number Diff line change
Expand Up @@ -662,6 +662,12 @@ function createApplicationMenu(mainWindow) {
sendMenuCommand('show-keyboard-shortcuts');
}
},
{
label: t('menu.help.showWelcome'),
click: () => {
sendMenuCommand('show-welcome');
}
},
{ type: 'separator' },
{
label: t('menu.help.documentation'),
Expand Down
7 changes: 5 additions & 2 deletions frontend/src/renderer/components/StartupLanding.css
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,12 @@
remains here. */

.startup-landing {
position: fixed;
/* Fills the layout host (its positioned parent), NOT the viewport, so the
persistent WorkflowBar above the host stays visible and clickable. z-index
sits above module content but below modals (--z-modal / ShortcutsHelp). */
position: absolute;
inset: 0;
z-index: 1000;
z-index: var(--z-sticky);
display: flex;
align-items: center;
justify-content: center;
Expand Down
Loading
Loading