Files
stack/assets/icons/move.svg
kert 8bd649d9ab feat: skinny packages, tree reorg, cloud abstraction (refs #182–#201)
P23 — Skinny Packages:
- Break conf→bib circular dependency with lazy guarded import
- Extract aco.table.base → conf.table_base (shared foundation)
- Add try/except ImportError guards on all cross-module imports
- Define per-module optional-dependencies in pyproject.toml
- Slim base deps to just pydantic; all heavy deps in optional groups
- Add gen_config.py --check validation for module/dep sync
- Add skinny-install CI matrix job (tests each extra in isolation)

P24 — Tree Reorganization:
- Move service configs to infra/ (traefik, coredns, grafana, etc.)
- Consolidate Dockerfiles under infra/images/
- Move styles/ → assets/css/ + assets/icons/ + assets/nature.py
- Update compose.yml, stack.toml, gen_config.py, all backend emitters
- Update bootstrap scripts and install_certs.sh

P25 — Cloud Provider Abstraction:
- Add cloud/ directory with self-hosted, aws, gcp, azure stubs
- Add cloud contexts (aws, gcp, azure) to stack.toml
- Add conf/storage.py — get_filesystem() dispatches per context
- Add aws, gcp, azure optional dependency groups
- Document service mapping for each provider

All 11955 tests pass. Zero functionality lost.
2026-03-24 15:00:26 -04:00

58 lines
966 B
XML

<svg viewBox="0 0 373 373" xmlns="http://www.w3.org/2000/svg">
<style>
#camera {
transform-origin: 186.5px 186.5px;
animation: zoomOut 3s ease forwards;
}
#pan {
animation: panOut 3s ease forwards;
}
#man {
transform-origin: 32px 364px;
animation: pivot 3s ease forwards;
}
/* camera zoom out */
@keyframes zoomOut {
0% { transform: scale(1.35); }
100% { transform: scale(1); }
}
/* camera pan */
@keyframes panOut {
0% { transform: translate(70px,0); }
100% { transform: translate(0,0); }
}
/* subtle pivot */
@keyframes pivot {
0% { transform: rotate(18deg); }
100% { transform: rotate(0deg); }
}
</style>
<g id="camera">
<g id="pan">
<!-- fire layer -->
<image href="fire_layer.png"
x="0" y="0"
width="373" height="373"/>
<!-- F silhouette -->
<g id="man">
<image href="f_layer.png"
x="0" y="0"
width="373" height="373"/>
</g>
</g>
</g>
</svg>