Repository navigation
Apps: an Organization's own tabs in Workspace (supersedes #446's per-browser groups) - #467
Conversation
Matěj decided (F32 addendum of 2026-10-16) that the Organization, not each browser, arranges its Workspace: `settings.workspace.tabs` of the root's lazurio.organization.json names the tabs in order and the modules in each, the same for every member. A module in no tab is in the first; a tab with nothing on this Environment is left out; fewer than two tabs show the plain Workspace. The catalog reads the tabs with the Organization, so the CLI, the Launchpad and agents see one arrangement. Only the Organization's Owner (GitHub's live answer) gets "Přesunout do karty" in a tile's menu and "Upravit karty" beside the tabs; both open the Organization's modules in its Dashboard, the settings writer of root decision 0194. The Launchpad writes nothing. This replaces the browser-local Work / Administration groups of the first two commits (their storage, account login and menu move) and keeps their tabs pattern: WAI-ARIA tabs, arrows/Home/End, focus kept across redraws. Tabs carry names only. The preview gains `workspace-tabs`. Co-Authored-By: MCN-Kacanos-M <284052013+MCN-Kacanos-M@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
971bb7c to
7b6ed72
Compare
… 0206 The tab name pattern now matches Lazurio Core's and the manifest schema's exactly (root decision 0206, HumanAndMachines/Lazurio#561): 1 to 40 characters, no control character and no whitespace at either end, so both readers judge one section identically. F32's addendum and the shaping note point to the root decision and the Core change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… in Apps, three kinds of words, the theme Brings #467 up to date with main (dbee5f6) after the guide F56 (#501-#503, #509), Apps → Trezor (#495, #500), three kinds of Environment (#497), one colour theme per Environment (#493) and the tour's gear stop (#475). One textual conflict, in scripts/preview-launchpad.ts: main's `team` flag for a hosted Team Environment and this branch's `workspace-tabs` flag sit side by side; each keeps its own option. The section head keeps main's accent colour (`--lz-accent`, #493) for its flag and rule. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…he flag flush on its rule Matěj decided on the wireframe (prototypes-lazurio#73, 2026-10-19) that the Organization's Workspace tabs are the same segmented switch as the column head's Chat · Apps · Automate, at the right end of the Workspace head 6 px above the blue rule, with "Upravit karty" right after it, while the "Workspace" flag stays flush on the rule with no gap under it. The switch reuses `nav.switch` / `.tab` of src/shell/styles.ts: 3 px around, 2 px between, radius-md and its inner corner, weight 550, the shown tab raised on a hairline, in the page roles the shell's colour roles stand for on the Launchpad (--hover, --card, --border, --fg, --muted-fg, --link), so the computed styles equal the column's switch under every theme. The head aligns its parts to its bottom edge and wraps in reverse: a switch that does not fit beside the flag takes a line above it, never between the flag and its rule. Keyboard (arrows, Home, End), WAI-ARIA roles and Productionspace are as they were. `appsSectionHead` gives the head's parts in order (flag first, then the switch with "Upravit karty", or the count) and is tested; the geometry was checked headless at 1440, 900 and 375 px in cs and en. F32 gains a dated addendum; the shaping note records the wireframe's personal-Workspace tabs (2026-10-17) as an open step. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…522) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
agentrozjedemeai
left a comment
There was a problem hiding this comment.
@immakermatty Reviewed exact head da7241b, including c56d123..da7241b: both merges and f84cee1. The preview conflict retains both team and workspace-tabs; the Apps guide help remains alongside its heading across redraws, Apps → Trezor, the three Environment kinds and the theme accent remain in the merged head. The section-head ordering and switch styling match F32; the flag stays anchored to its rule when the switch wraps. Independent check: git diff --check origin/main...HEAD, bun run check:static, and 153 focused tests pass in a disposable exact-head clone. Head CI static and both test shards pass; no unresolved review threads. No substantive defect found. This approval is for this SHA only; merge remains subject to live provider gates.
Status: ready for review. The product owner looked at the preview and approved the direction (2026-10-16). Root decision: HumanAndMachines/Lazurio#561 (0206).
Why
A partner Organization's Owner proposed Work / Administration groups in Workspace (#446, related #428). Matěj, the product owner, agreed with the direction and changed its scope. The Organization arranges its Workspace into tabs it names itself ("Každodenní práce", "Finance", "Sklad"), and every member sees the same arrangement. It is not a fixed pair, and it is not a per-browser preference. This covers what Teams were once drawn for in the UI, without bringing Teams back. A person's own order stays the favourites in the column.
What changes
One setting:
settings.workspace.tabsin the Organization root'slazurio.organization.json. It is an ordered list of{ name, modules }. Root decision 0194 says Organization-wide choices live in this section and are judged by its one closed-tree reader. The rules:An invalid section yields no tabs. The manifest stays usable.
Catalog:
readFolderCatalogexposesworkspaceTabsper Organization, solazurio organization list --json, the Launchpad and agents all see one arrangement.Apps: a row of tabs sits beside the Workspace pill, using the WAI-ARIA tabs pattern from Apps: add Work and Administration groups within Workspace #446 (arrows/Home/End, focus kept across background redraws).
Owner only: where GitHub's live answer says the identity is the Organization's Owner, Apps offers "Přesunout do karty" in a tile's menu and "Upravit karty" beside the tabs. Both open the Organization's modules in its Dashboard (
?tab=modules&focus=workspace-tabs[&module=<id>]), the settings writer of 0194. The Launchpad writes nothing.Preview:
bun scripts/preview-launchpad.ts local cs 0 owner workspace-tabsgives a dozen modules in three tabs.Decision: F32 gains a dated addendum with the alternatives. The shaping doc is
docs/workspace-tabs.md.The first two commits are the original contribution from #446 (authorship kept). The third replaces their browser-local storage, account login and in-menu move, and keeps the tabs pattern.
Not in this PR (rollout order)
workspace.tabstoorganization-settings-lib.mjsand to the schema's$defs.organizationSettings, with the same name pattern (Decisions: 0206 Workspace tabs belong to the Organization; 0188 offers the personal space only on the personal Environment HumanAndMachines/Lazurio#561).Follow-ups
docs/workspace-tabs.md: whether moving should happen directly in Apps, a suggested name for the first tab, and whether Stewards may arrange tabs.Verified
bun run check:static: pass on the rebased head.bun test: 3837 pass, 9 skip. Five tests timed out at 5 s under machine load (load 13); they are intests/install-script.test.tsandtests/tools-login.test.ts, unrelated to this change, and pass with--timeout 60000.tests/workspace-tabs.test.ts,tests/organization-settings*.test.ts,tests/apps-view.test.ts,tests/catalog*.test.ts. The cases are: a real Folder's catalog read, an invalid section, the partition rules, favourites first inside a tab, Productionspace and the personal space unchanged, and the Owner-only Dashboard target.workspace-tabsat 1280 px and 375 px: tabs, arrow keys, the Owner's menu item and "Upravit karty".2026-10-19: brought up to date with main; tabs as the Chat / Apps / Automate switch, Workspace flag flush on its rule (prototypes-lazurio#73)
Taken over from the original thread by Matěj's DEV-6612 thread. Two things changed; the data contract, the Owner's Dashboard targets and the rollout order above did not.
1. Merged with main (a merge, not a rebase: the branch is public). Main had moved on with the guide F56 (#501–#503, #509), Apps → Trezor (#495, #500), three kinds of Environment (#497), one colour theme per Environment (#493) and the tour's gear stop (#475).
scripts/preview-launchpad.ts: main'steamflag and this branch'sworkspace-tabsflag sit side by side, each keeping its option.--lz-accent).2. The look Matěj chose on the wireframe (prototypes-lazurio#73), recorded as F32's addendum of 2026-10-19.
nav.switch/.tabinsrc/shell/styles.ts). That means 3 px around and 2 px between the tabs,radius-mdand its inner corner, weight 550, and the shown tab raised on a hairline. The colours come from the page roles that the shell's colour roles stand for on the Launchpad (--hover,--card,--border,--fg,--muted-fg, focus--link). No new token: in the browser the computed background, padding, radius, gap, raised tab and hairline equal the column's switch.appsSectionHead(apps-view.ts) now gives the head's parts in order, andcatalog-panel.tsdraws them. Its test holds the order: the flag first, then the switch with "Upravit karty", or the count. Pixel geometry is checked in a browser, not in CI.Open, not in this PR: root decision 0207 point 1 (2026-10-17) says a personal Workspace may have tabs like an Organization's. This contract still gives the personal space none, because it has no Organization root whose settings could hold them. Where its arrangement lives is a separate step, noted in
docs/workspace-tabs.md. Root decision 0206 itself is still the open HumanAndMachines/Lazurio#561, and so is Lazurio Core's half (rollout step 1).Verified on head
da7241b4fd090231fe1d9369b7d8c80c2193c6ff(after a second merge of main for #522's Trezor video and #527's Composio pin; no conflict):bun run check:static: pass.workspace-tabs,organization-settings*,apps-view,catalog-view,launchpad-page-corners,launchpad-guide,launchpad-theme,launchpad-first-paint,shell-theme): 182 pass, 0 fail.bun test --timeout 30000on f84cee1 (before the second merge): 4212 pass, 9 skip, 2 fail. Both failures are timeouts in tests this PR does not touch:guarded-process(fixture start, 5 s) andfrozen-install-process(lifecycle preparation, 15 s), on a loaded machine (the run took 24 min). Each passes alone:guarded-processwith the focused set,frozen-install-process23/23. CI is the authority.check:staticpasses;workspace-tabs,shell-guide,environment-wording,apps-view,catalog-view,launchpad-vault-page: 156 pass, 0 fail.bun scripts/preview-launchpad.ts local cs|en … owner workspace-tabs, at 1440 and 900 px in Czech and English, before and after switching a tab (ArrowRight, End, Home, a click), plus 375 px:aria-labelledby, the "?" still plays the guide after a switch, and Productionspace has its count and no tabs./.lazurio/account/environments403,/api/update/status503,/api/content/jobs/latest404).🤖 Generated with Claude Code
Note
Add Organization-owned Workspace tabs to Launchpad Apps view
Implements the decided Organization Workspace tab model (supersedes #446's per-browser groups). Tabs are stored in the Organization manifest under
workspace.tabsand validated in organization-settings.ts for tab count (max 12), name uniqueness after NFC/case folding, module ID syntax (max 500 per tab), and duplicate module assignments.workspace-tabsoption in preview-launchpad.ts, CSS in index.html, English and Czech labels in messages.ts, plus contract, catalog, rendering, fallback, and target tests in workspace-tabs.test.ts.preview.writeExamplenow spreads existing settings before writing integration settings; check hosted previews that configure Composio or Microsoft 365 retain prior behavior.Macroscope summarized 7b6ed72.