Agent instructions, skills, SSH host aliases and expansion triggers are worth having identical on every machine one person owns, and belong in none of the shared configuration. They live in user/ now, with a manifest saying where each piece goes and a link-user stage that puts it there. That stage does nothing unless the machine said yes. Somebody who clones Panama to try the desktop keeps their own ~/.claude/CLAUDE.md exactly where it was; the question names the destinations and defaults to no. Anything displaced goes to config/old rather than being deleted. ~/.claude/CLAUDE.md and ~/.codex/AGENTS.md were byte-identical copies of one file, which is the drift this exists to prevent. Also adds the vitals toggles for the battery and Claude usage readouts, which had preferences and no way to reach them.
1.1 KiB
1.1 KiB
name, description
| name | description |
|---|---|
| global-layers | Create components that persist across slides like footers and backgrounds |
Global Layers
Create components that persist across slides.
Layer Files
Create in project root:
global-top.vue- Above all slides (single instance)global-bottom.vue- Below all slides (single instance)slide-top.vue- Above each slide (per-slide instance)slide-bottom.vue- Below each slide (per-slide instance)custom-nav-controls.vue- Custom navigation controls
Z-Order (top to bottom)
- NavControls / custom-nav-controls.vue
- global-top.vue
- slide-top.vue
- Slide Content
- slide-bottom.vue
- global-bottom.vue
Example: Footer
<!-- global-bottom.vue -->
<template>
<footer class="absolute bottom-0 left-0 right-0 p-2">Your Name</footer>
</template>
Conditional Rendering
<!-- Hide on cover layout -->
<template>
<footer v-if="$nav.currentLayout !== 'cover'" class="absolute bottom-0 p-2">
{{ $nav.currentPage }} / {{ $nav.total }}
</footer>
</template>
Export Note
Use --per-slide export option when global layers depend on navigation state.