Harden release publishing and document release blockers
This commit is contained in:
1 parent
60bf9a8ef6
commit
b8507df346
11 files changed
+261
-9
No files matched your search
+64
@@ -0,0 +1,64 @@
|
|||||||
|
# Credits and Provenance
|
||||||
|
|
||||||
|
Gig Line is a local, single-player security-shift game built with Godot 4 and
|
||||||
|
GDScript. This file records the asset provenance needed for the release review;
|
||||||
|
it is not a legal opinion or a claim that every provider licence has already
|
||||||
|
been cleared for public distribution.
|
||||||
|
|
||||||
|
## Game, code and design
|
||||||
|
|
||||||
|
- Game design, systems, scenarios, dialogue and UI code: the Gig Line project.
|
||||||
|
- Engine: [Godot Engine 4.7.2](https://godotengine.org/), MIT licence.
|
||||||
|
- The game bundles no third-party fonts; it uses Godot's default theme font.
|
||||||
|
- No third-party music, sound effects or voice recordings are bundled. Crowd
|
||||||
|
ambience and radio cues are generated procedurally at runtime.
|
||||||
|
|
||||||
|
## 3D characters, gear and props
|
||||||
|
|
||||||
|
The character, gear and prop library is generated by project-owned scripts
|
||||||
|
(`tools/blender_assets.py`, `tools/npc_pipeline.py`, `tools/model_pipeline.py`)
|
||||||
|
using Blender. The `.blend` working sources are developer artifacts and are not
|
||||||
|
shipped. The exported `.glb` files and baked AO maps are project assets; they do
|
||||||
|
not embed third-party models or purchased asset packs.
|
||||||
|
|
||||||
|
The venue geometry is authored procedurally in `src/game/world_builder.gd` as a
|
||||||
|
stylized reconstruction. The Joke Shop is a fictional stand-in for the real
|
||||||
|
Sunset Strip block; the game does not claim endorsement by, or an exact replica
|
||||||
|
of, any real venue or tenant.
|
||||||
|
|
||||||
|
## AI-assisted images
|
||||||
|
|
||||||
|
Surface textures, skyline panoramas, UI art and concept references were produced
|
||||||
|
with image-generation calls from the project's tooling. The default model slugs
|
||||||
|
recorded in the source are:
|
||||||
|
|
||||||
|
- `bytedance-seed/seedream-4.5` — `tools/generate_textures.py`
|
||||||
|
- `openai/gpt-5-image-mini` — `tools/asset_pipeline.py`,
|
||||||
|
`tools/model_pipeline.py`, `tools/scene_concepts.py` and
|
||||||
|
`tools/screen_designs.py`
|
||||||
|
- Judging/review calls use the model selected by `tools/openrouter_judge.py` and
|
||||||
|
are development-only; they do not ship in the game.
|
||||||
|
|
||||||
|
The prompts and generation workflow live in those tools. Per-file generation
|
||||||
|
metadata is not stored with every image, so the exact provider, model version and
|
||||||
|
generation date of each committed bitmap cannot be reconstructed from the
|
||||||
|
repository alone. Before a public 0.10.0 release, the provider terms and
|
||||||
|
commercial-use/redistribution rights for those generated outputs must be
|
||||||
|
reviewed and recorded. **This is a release blocker, not an assumed clearance.**
|
||||||
|
|
||||||
|
Reference photographs linked from the venue documents are hosted on Wikimedia
|
||||||
|
Commons and were used for proportion/material study only. They are not included
|
||||||
|
in the game or its release packages. If any future derivative asset copies a
|
||||||
|
reference more directly, its attribution and licence must be added here.
|
||||||
|
|
||||||
|
## Audio
|
||||||
|
|
||||||
|
All runtime audio is procedural (crowd bed, radio crackle and interface cues).
|
||||||
|
There are no external audio files, so there is no separate music/SFX licence to
|
||||||
|
clear. See `docs/accessibility.md` for caption and volume behaviour.
|
||||||
|
|
||||||
|
## Third-party names
|
||||||
|
|
||||||
|
The game is a work of fiction. Real place names and public references are used
|
||||||
|
for orientation and satire/stand-in geography; no real person, venue or brand
|
||||||
|
endorses the game. Review the storefront and trademark language before release.
|
||||||
@@ -183,6 +183,12 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
|||||||
0.9.3 UI polish, 0.9.4 NPC visual optimization, 0.9.5 texture/material pass and
|
0.9.3 UI polish, 0.9.4 NPC visual optimization, 0.9.5 texture/material pass and
|
||||||
0.9.6 integration are complete and in `DONE.md`. 0.10.0 release-candidate work
|
0.9.6 integration are complete and in `DONE.md`. 0.10.0 release-candidate work
|
||||||
is next. The source version is 0.9.6.
|
is next. The source version is 0.9.6.
|
||||||
|
- **Release/legal blockers (0.10.0 work, 2026-11-03):** macOS remains unsigned
|
||||||
|
(quarantine instructions only); AI image provider terms/commercial rights and
|
||||||
|
external storefront/rating approval are not cleared; external playtests and the
|
||||||
|
full hardware matrix are pending. `CREDITS.md`, `PRIVACY.md`, `docs/accessibility.md`
|
||||||
|
and `docs/known-limitations.md` record these explicitly rather than claiming
|
||||||
|
approval. Do not tag 0.10.0 as final until these are accepted or cleared.
|
||||||
- **Save migration (0.10.0 work, 2026-11-03):** fixtures in `src/test/fixtures/saves/`
|
- **Save migration (0.10.0 work, 2026-11-03):** fixtures in `src/test/fixtures/saves/`
|
||||||
cover 0.8 settings/campaign/history and a 0.9.0 checkpoint. `_load_json` uses
|
cover 0.8 settings/campaign/history and a 0.9.0 checkpoint. `_load_json` uses
|
||||||
`JSON.new().parse()` so corrupt player files fall back silently instead of
|
`JSON.new().parse()` so corrupt player files fall back silently instead of
|
||||||
|
|||||||
+27
@@ -0,0 +1,27 @@
|
|||||||
|
# Privacy Note
|
||||||
|
|
||||||
|
Gig Line runs locally. The game itself does not include telemetry, analytics,
|
||||||
|
accounts, advertising, cloud saves or network requests. It does not access the
|
||||||
|
camera, microphone, contacts or location, and the body-camera feature is a
|
||||||
|
simulated overlay, not a real recording device.
|
||||||
|
|
||||||
|
Player data is written only to Godot's local `user://` directory:
|
||||||
|
|
||||||
|
- `settings.json`
|
||||||
|
- `campaign.json`
|
||||||
|
- `shift_results.json`
|
||||||
|
- `shift_state.json`
|
||||||
|
|
||||||
|
Those files stay on the player's machine unless the player copies them. Deleting
|
||||||
|
the files (or the `Gig Line` user directory) resets the profile. See
|
||||||
|
[`docs/getting-started.md`](docs/getting-started.md#save-data-and-migration) for
|
||||||
|
locations, migration and rollback instructions.
|
||||||
|
|
||||||
|
The repository's development tools can call OpenRouter when a developer supplies
|
||||||
|
`OPENROUTER_API_KEY`; those calls generate or judge development assets and are
|
||||||
|
not part of the shipped game. The key and generated review artifacts remain
|
||||||
|
local/gitignored.
|
||||||
|
|
||||||
|
Questions about a storefront release should be checked against the final package
|
||||||
|
and the provider terms recorded in [`CREDITS.md`](CREDITS.md); external legal and
|
||||||
|
storefront approval is still pending for 0.10.0.
|
||||||
@@ -121,7 +121,11 @@ Full setup, every run/test/smoke command, and the controls table are in
|
|||||||
- [`docs/asset-tooling.md`](docs/asset-tooling.md) — Asset pipelines, model tools, and screenshot gates.
|
- [`docs/asset-tooling.md`](docs/asset-tooling.md) — Asset pipelines, model tools, and screenshot gates.
|
||||||
- [`docs/getting-started.md`](docs/getting-started.md) — Setup, run/test commands, and controls.
|
- [`docs/getting-started.md`](docs/getting-started.md) — Setup, run/test commands, and controls.
|
||||||
- [`docs/development-status.md`](docs/development-status.md) — Implemented features and what's next.
|
- [`docs/development-status.md`](docs/development-status.md) — Implemented features and what's next.
|
||||||
|
- [`docs/accessibility.md`](docs/accessibility.md) — Accessibility features, known gaps and statement.
|
||||||
|
- [`docs/known-limitations.md`](docs/known-limitations.md) — Release-candidate blockers and accepted limitations.
|
||||||
- [`docs/smoke-checklist.md`](docs/smoke-checklist.md) — Manual smoke-test checklist.
|
- [`docs/smoke-checklist.md`](docs/smoke-checklist.md) — Manual smoke-test checklist.
|
||||||
|
- [`CREDITS.md`](CREDITS.md) — Credits, AI/reference provenance and licensing notes.
|
||||||
|
- [`PRIVACY.md`](PRIVACY.md) — Local-only data, save files and development API use.
|
||||||
- [`docs/blender-assets.md`](docs/blender-assets.md) — Blender asset library: characters, gear, props, attach points.
|
- [`docs/blender-assets.md`](docs/blender-assets.md) — Blender asset library: characters, gear, props, attach points.
|
||||||
- [`docs/npc-visual-review.md`](docs/npc-visual-review.md) — 0.9.4 NPC baseline, acceptance criteria and ranked visual gaps; 0.9.5 texture comparison is in [`docs/blender_previews/sheet_texture_refinement_0.9.5.jpg`](docs/blender_previews/sheet_texture_refinement_0.9.5.jpg).
|
- [`docs/npc-visual-review.md`](docs/npc-visual-review.md) — 0.9.4 NPC baseline, acceptance criteria and ranked visual gaps; 0.9.5 texture comparison is in [`docs/blender_previews/sheet_texture_refinement_0.9.5.jpg`](docs/blender_previews/sheet_texture_refinement_0.9.5.jpg).
|
||||||
- [`docs/npc-proportion-audit.md`](docs/npc-proportion-audit.md) — NPC proportion measurements against the shared stylized guide.
|
- [`docs/npc-proportion-audit.md`](docs/npc-proportion-audit.md) — NPC proportion measurements against the shared stylized guide.
|
||||||
@@ -140,6 +144,16 @@ tutorial/campaign/resume work and the v0.7.x venue/gear/judge work. See [`docs/d
|
|||||||
for the implemented list and [`TODO.md`](TODO.md) for the 0.x roadmap. Manual
|
for the implemented list and [`TODO.md`](TODO.md) for the 0.x roadmap. Manual
|
||||||
verification uses the [`docs/smoke-checklist.md`](docs/smoke-checklist.md).
|
verification uses the [`docs/smoke-checklist.md`](docs/smoke-checklist.md).
|
||||||
|
|
||||||
|
## Credits, Privacy and Accessibility
|
||||||
|
|
||||||
|
Gig Line is a local-only single-player game: there is no runtime telemetry or
|
||||||
|
network service, and saves stay in Godot's local `user://` folder. The
|
||||||
|
body-camera overlay is simulated. Asset provenance, AI-assisted image usage and
|
||||||
|
credits are recorded in [`CREDITS.md`](CREDITS.md); the local-data policy is in
|
||||||
|
[`PRIVACY.md`](PRIVACY.md); accessibility features and gaps are in
|
||||||
|
[`docs/accessibility.md`](docs/accessibility.md); and release-candidate blockers
|
||||||
|
are listed in [`docs/known-limitations.md`](docs/known-limitations.md).
|
||||||
|
|
||||||
## Development Workflow
|
## Development Workflow
|
||||||
|
|
||||||
Follow [`AGENTS.md`](AGENTS.md): inspect the repository first, record work as checkbox tasks in `TODO.md`, move completed sections to `DONE.md`, update `MEMORY.md` with durable context, and keep this README synchronized with setup and architecture changes.
|
Follow [`AGENTS.md`](AGENTS.md): inspect the repository first, record work as checkbox tasks in `TODO.md`, move completed sections to `DONE.md`, update `MEMORY.md` with durable context, and keep this README synchronized with setup and architecture changes.
|
||||||
@@ -118,22 +118,43 @@ verify every distribution path. This is the next minor release after the 0.9.x p
|
|||||||
artifact names, sizes and checksums.
|
artifact names, sizes and checksums.
|
||||||
- [ ] Smoke-test fresh Linux portable/AppImage, Windows portable/installer, macOS unzip/launch,
|
- [ ] Smoke-test fresh Linux portable/AppImage, Windows portable/installer, macOS unzip/launch,
|
||||||
Web static hosting and Desktop HQ Vulkan fallback on the target matrix.
|
Web static hosting and Desktop HQ Vulkan fallback on the target matrix.
|
||||||
- [ ] Add a disk-space preflight and retention policy to the release/publish scripts so a full
|
- [x] Add a disk-space preflight and retention policy to the release/publish scripts so a full
|
||||||
Gitea host cannot leave a partially uploaded release.
|
Gitea host cannot leave a partially uploaded release. (`publish_release.sh`
|
||||||
- [ ] Verify release metadata, tag/version consistency, asset counts and download links; retain
|
checks artifact size/free space, writes SHA-256 checksums, supports
|
||||||
|
`PUBLISH_DRY_RUN`, rolls back uploaded assets/new releases on failure, and
|
||||||
|
offers opt-in `RETAIN_RELEASES` pruning; dry-run verified.)
|
||||||
|
- [x] Verify release metadata, tag/version consistency, asset counts and download links; retain
|
||||||
at least the latest 0.8/0.9 releases and document older-asset pruning.
|
at least the latest 0.8/0.9 releases and document older-asset pruning.
|
||||||
- [ ] Decide and document whether macOS signing/notarization is required for 0.10.0 or explicitly
|
(Source/version and tag are both 0.9.6; all seven published releases carry
|
||||||
|
5–7 assets, including the retained v0.8.0/v0.8.1/v0.9.0/v0.9.1 line.
|
||||||
|
`publish_release.sh` documents opt-in `RETAIN_RELEASES` pruning and
|
||||||
|
`RELEASING.md` describes the seven-release policy.)
|
||||||
|
- [x] Decide and document whether macOS signing/notarization is required for 0.10.0 or explicitly
|
||||||
remains a future release blocker; record the quarantine instructions either way.
|
remains a future release blocker; record the quarantine instructions either way.
|
||||||
|
(0.10.0 ships unsigned with quarantine instructions; signing/notarization
|
||||||
|
remains an explicit public-release blocker in `RELEASING.md` and
|
||||||
|
`known-limitations.md`.)
|
||||||
|
|
||||||
### Legal, credits and platform policy
|
### Legal, credits and platform policy
|
||||||
|
|
||||||
- [ ] Audit AI-assisted asset provenance and licenses; record source/model usage and any
|
- [x] Audit AI-assisted asset provenance and licenses; record source/model usage and any
|
||||||
redistribution constraints for textures, characters, props and UI art.
|
redistribution constraints for textures, characters, props and UI art.
|
||||||
- [ ] Audit audio/SFX/music licensing (or confirm everything is procedural) and add a credits file.
|
(`CREDITS.md` records the Blender/OpenRouter toolchain, default model slugs,
|
||||||
- [ ] Review body-camera/privacy language, mental-health-crisis representation, age/content rating
|
missing per-file generation metadata and the commercial-rights review as an
|
||||||
|
explicit release blocker.)
|
||||||
|
- [x] Audit audio/SFX/music licensing (or confirm everything is procedural) and add a credits file.
|
||||||
|
(All runtime audio is procedural; no external music/SFX files are bundled.
|
||||||
|
`CREDITS.md` records this.)
|
||||||
|
- [x] Review body-camera/privacy language, mental-health-crisis representation, age/content rating
|
||||||
and storefront requirements; fix any release-blocking copy or content.
|
and storefront requirements; fix any release-blocking copy or content.
|
||||||
- [ ] Add the player-facing credits, known limitations, accessibility statement and privacy note to
|
(`PRIVACY.md` clarifies the simulated body camera/local-only data; the
|
||||||
the release package/README.
|
accessibility and known-limitations pages record the remaining
|
||||||
|
mental-health/rating/storefront review as a release blocker rather than
|
||||||
|
claiming approval.)
|
||||||
|
- [x] Add the player-facing credits, known limitations, accessibility statement and privacy note to
|
||||||
|
the release package/README. (`README.md` links `CREDITS.md`, `PRIVACY.md`,
|
||||||
|
`docs/accessibility.md` and `docs/known-limitations.md`; the Web and Desktop
|
||||||
|
HQ package builders copy those documents into the shipped archives.)
|
||||||
- [ ] Mark external legal/storefront approval as complete or explicitly block the 0.10.0 release on it.
|
- [ ] Mark external legal/storefront approval as complete or explicitly block the 0.10.0 release on it.
|
||||||
|
|
||||||
### Documentation and visual sign-off
|
### Documentation and visual sign-off
|
||||||
|
|||||||
@@ -14,7 +14,11 @@ This folder holds the project documentation, visual references and generated QA
|
|||||||
- [`npc-visual-review.md`](npc-visual-review.md) — NPC visual baseline, acceptance criteria and ranked gaps
|
- [`npc-visual-review.md`](npc-visual-review.md) — NPC visual baseline, acceptance criteria and ranked gaps
|
||||||
- [`npc-proportion-audit.md`](npc-proportion-audit.md) — NPC proportion ratios and stylized guide results
|
- [`npc-proportion-audit.md`](npc-proportion-audit.md) — NPC proportion ratios and stylized guide results
|
||||||
- [`development-status.md`](development-status.md) — implemented features and current gaps
|
- [`development-status.md`](development-status.md) — implemented features and current gaps
|
||||||
|
- [`accessibility.md`](accessibility.md) — accessibility statement and known gaps
|
||||||
|
- [`known-limitations.md`](known-limitations.md) — release-candidate blockers and accepted limits
|
||||||
- [`smoke-checklist.md`](smoke-checklist.md) — manual verification
|
- [`smoke-checklist.md`](smoke-checklist.md) — manual verification
|
||||||
|
- [`../CREDITS.md`](../CREDITS.md) — credits and asset provenance
|
||||||
|
- [`../PRIVACY.md`](../PRIVACY.md) — privacy note
|
||||||
- [`ui-copy.md`](ui-copy.md) — screen, copy and button inventory
|
- [`ui-copy.md`](ui-copy.md) — screen, copy and button inventory
|
||||||
- [`RELEASING.md`](RELEASING.md) — export, CI and publishing workflow
|
- [`RELEASING.md`](RELEASING.md) — export, CI and publishing workflow
|
||||||
- [`adr/README.md`](adr/README.md) — architecture decisions
|
- [`adr/README.md`](adr/README.md) — architecture decisions
|
||||||
|
|||||||
@@ -103,6 +103,26 @@ The optional Desktop HQ zip is assembled by `tools/build_releases.sh` from
|
|||||||
`packaging/desktop_hq/`; keep `override.cfg` next to the extracted executable.
|
`packaging/desktop_hq/`; keep `override.cfg` next to the extracted executable.
|
||||||
It is not part of the default Compatibility/Web build.
|
It is not part of the default Compatibility/Web build.
|
||||||
|
|
||||||
|
`tools/publish_release.sh` preflights every artifact for existence and non-zero
|
||||||
|
size, checks free space in `build/`, writes `build/SHA256SUMS-<version>.txt`, and
|
||||||
|
uploads only after those checks pass. If an upload or the final asset-count check
|
||||||
|
fails, it removes the assets it just uploaded (and removes a newly created
|
||||||
|
release) so the host never keeps a partial release. Use
|
||||||
|
`PUBLISH_DRY_RUN=1 ./tools/publish_release.sh` to run the preflight and checksum
|
||||||
|
steps without touching the API. Set `RETAIN_RELEASES=7` to prune older releases
|
||||||
|
after a successful publish; the default `0` disables pruning and never deletes
|
||||||
|
history implicitly. A retention of seven keeps the newest seven releases,
|
||||||
|
including the latest 0.8/0.9 line.
|
||||||
|
|
||||||
|
### 0.10.0 macOS signing decision
|
||||||
|
|
||||||
|
The 0.10.0 release candidate will continue to ship an **unsigned** macOS zip with
|
||||||
|
the documented right-click/`xattr` quarantine instructions. Signing and
|
||||||
|
notarization remain a public-release blocker until an Apple Developer account and
|
||||||
|
a reproducible signing/notarization job are available; they are not silently
|
||||||
|
claimed as complete. The same limitation is recorded in
|
||||||
|
[`known-limitations.md`](known-limitations.md).
|
||||||
|
|
||||||
Always run the release build from a clean checkout or detached worktree. Godot
|
Always run the release build from a clean checkout or detached worktree. Godot
|
||||||
can pack files from ignored `tmp/` and old `build/` folders into the PCK; the
|
can pack files from ignored `tmp/` and old `build/` folders into the PCK; the
|
||||||
0.9.6 dirty-tree build produced 1.6–3.1 GB artifacts, while the clean worktree
|
0.9.6 dirty-tree build produced 1.6–3.1 GB artifacts, while the clean worktree
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
# Accessibility Statement
|
||||||
|
|
||||||
|
Gig Line is a keyboard/mouse-first first-person game with gamepad support. The
|
||||||
|
current build includes the following accessibility features:
|
||||||
|
|
||||||
|
- Remappable keyboard and gamepad bindings, persisted in `settings.json`.
|
||||||
|
- Keyboard focus rings and explicit default focus in every modal, with A/B
|
||||||
|
accept/cancel on a gamepad and wrapped Tab/arrow navigation.
|
||||||
|
- Adjustable HUD font scale up to 1.75× with clipped/ellipsized long labels.
|
||||||
|
- Reduced-motion mode that disables head bob and motion-sensitive presentation.
|
||||||
|
- Captions in the HUD log for radio, interaction and event messages.
|
||||||
|
- Master, SFX and ambience volume controls.
|
||||||
|
- Shape plus number escalation meter, so escalation is readable without colour.
|
||||||
|
- Hold-to-confirm emergency action and guarded destructive actions.
|
||||||
|
- Searchable Help generated from the live input bindings.
|
||||||
|
- Mouse-transparent HUD, right-click/Esc modal handling, and a predictable
|
||||||
|
top-panel close path.
|
||||||
|
|
||||||
|
Known gaps:
|
||||||
|
|
||||||
|
- There is no screen-reader integration or text-to-speech narration.
|
||||||
|
- The game is English-only; no pseudo-locale or full localization review has
|
||||||
|
been completed.
|
||||||
|
- The visual style is stylized and some small environmental detail may be hard
|
||||||
|
to read at low resolution; a full low-vision/high-contrast audit is pending.
|
||||||
|
- Audio captions cover gameplay messages, not every ambient sound.
|
||||||
|
- A formal WCAG conformance claim has **not** been made. External accessibility
|
||||||
|
review is still a 0.10.0 release-review item.
|
||||||
|
|
||||||
|
Test evidence and the manual checklist live in
|
||||||
|
[`smoke-checklist.md`](smoke-checklist.md); settings and save behaviour are
|
||||||
|
documented in [`getting-started.md`](getting-started.md).
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
# Known Limitations
|
||||||
|
|
||||||
|
This page records the limitations that remain at the 0.10.0 release-candidate
|
||||||
|
stage. Items marked **blocker** must be cleared or explicitly accepted before a
|
||||||
|
public release.
|
||||||
|
|
||||||
|
## Release blockers
|
||||||
|
|
||||||
|
- **External playtest:** at least five first-time-player sessions and the
|
||||||
|
resulting onboarding/accessibility triage have not been completed. The
|
||||||
|
tutorial/campaign evidence is currently automated smoke coverage, not player
|
||||||
|
observation.
|
||||||
|
- **AI asset provenance:** the image-generation provider terms and commercial
|
||||||
|
redistribution rights for the committed AI-assisted textures/UI art still need
|
||||||
|
legal review. See [`../CREDITS.md`](../CREDITS.md).
|
||||||
|
- **Storefront/legal approval:** age/content rating, storefront policy, trademark
|
||||||
|
language and the mental-health-crisis/body-camera representation have not been
|
||||||
|
externally approved.
|
||||||
|
- **macOS signing/notarization:** the 0.10.0 release candidate ships unsigned
|
||||||
|
with right-click/`xattr` quarantine instructions. Signing and notarization are
|
||||||
|
required before a broad public/storefront release and remain blocked until an
|
||||||
|
Apple Developer account and signing job exist.
|
||||||
|
- **Hardware matrix:** Web, Windows and Desktop HQ have been built and checked
|
||||||
|
structurally; a complete target-hardware performance/launch matrix is still
|
||||||
|
pending.
|
||||||
|
|
||||||
|
## Content and presentation
|
||||||
|
|
||||||
|
- The venues are stylized reconstructions, not survey-accurate models. The Joke
|
||||||
|
Shop is a fictional stand-in for the real Sunset Strip block.
|
||||||
|
- Character faces, hands and fabric use a deliberately low-poly style; the
|
||||||
|
>26 m tier remains a two-quad impostor and there is no separate finger-curl
|
||||||
|
rig. The accepted limits are recorded in
|
||||||
|
[`npc-visual-review.md`](npc-visual-review.md).
|
||||||
|
- There is no live 3D body-camera replay; the timeline is text-based.
|
||||||
|
- There is no recorded voice/music track. Ambience and cues are procedural.
|
||||||
|
- The game is English-only and does not yet have a translator workflow or
|
||||||
|
pseudo-locale layout sign-off.
|
||||||
|
|
||||||
|
## Persistence and platform
|
||||||
|
|
||||||
|
- Save migration is covered by synthetic 0.8/0.9 fixtures and failure-mode tests,
|
||||||
|
not by a real player profile collected from every earlier release.
|
||||||
|
- Desktop HQ requires a Vulkan-capable GPU/driver; the default Compatibility and
|
||||||
|
Web builds remain the broad target.
|
||||||
|
- The manual smoke checklist is completed by developers; external device
|
||||||
|
coverage (Windows installer, macOS launch, gamepad and Web hosts) is not yet a
|
||||||
|
complete evidence set.
|
||||||
@@ -17,6 +17,12 @@ set -euo pipefail
|
|||||||
|
|
||||||
GODOT="${GODOT:-godot}"
|
GODOT="${GODOT:-godot}"
|
||||||
VERSION="$(grep -oP 'config/version="\K[^"]+' project.godot)"
|
VERSION="$(grep -oP 'config/version="\K[^"]+' project.godot)"
|
||||||
|
PLAYER_DOCS=(
|
||||||
|
"CREDITS.md"
|
||||||
|
"PRIVACY.md"
|
||||||
|
"docs/accessibility.md"
|
||||||
|
"docs/known-limitations.md"
|
||||||
|
)
|
||||||
mkdir -p build
|
mkdir -p build
|
||||||
# Presets now embed the PCK into a single binary; drop stale .pck leftovers.
|
# Presets now embed the PCK into a single binary; drop stale .pck leftovers.
|
||||||
rm -f build/*.pck
|
rm -f build/*.pck
|
||||||
@@ -34,6 +40,9 @@ echo "==> Exporting Web (no threads, static-hosting friendly)"
|
|||||||
rm -rf build/web
|
rm -rf build/web
|
||||||
mkdir -p build/web
|
mkdir -p build/web
|
||||||
"$GODOT" --headless --export-release "Web" "build/web/index.html"
|
"$GODOT" --headless --export-release "Web" "build/web/index.html"
|
||||||
|
for doc in "${PLAYER_DOCS[@]}"; do
|
||||||
|
cp "$doc" "build/web/$(basename "$doc")"
|
||||||
|
done
|
||||||
# Ship the web build as a single zip so it can be downloaded and served as-is.
|
# Ship the web build as a single zip so it can be downloaded and served as-is.
|
||||||
rm -f "build/gig-line-web-${VERSION}.zip"
|
rm -f "build/gig-line-web-${VERSION}.zip"
|
||||||
if command -v zip >/dev/null 2>&1; then
|
if command -v zip >/dev/null 2>&1; then
|
||||||
@@ -58,6 +67,9 @@ cp "build/gig-line-linux-${VERSION}.x86_64" "$HQ_DIR/"
|
|||||||
cp "build/gig-line-windows-${VERSION}.exe" "$HQ_DIR/"
|
cp "build/gig-line-windows-${VERSION}.exe" "$HQ_DIR/"
|
||||||
cp packaging/desktop_hq/override.cfg "$HQ_DIR/"
|
cp packaging/desktop_hq/override.cfg "$HQ_DIR/"
|
||||||
cp packaging/desktop_hq/README.txt "$HQ_DIR/"
|
cp packaging/desktop_hq/README.txt "$HQ_DIR/"
|
||||||
|
for doc in "${PLAYER_DOCS[@]}"; do
|
||||||
|
cp "$doc" "$HQ_DIR/$(basename "$doc")"
|
||||||
|
done
|
||||||
rm -f "build/gig-line-desktop-hq-${VERSION}.zip"
|
rm -f "build/gig-line-desktop-hq-${VERSION}.zip"
|
||||||
if command -v zip >/dev/null 2>&1; then
|
if command -v zip >/dev/null 2>&1; then
|
||||||
(cd "$HQ_DIR" && zip -q -r "../gig-line-desktop-hq-${VERSION}.zip" .)
|
(cd "$HQ_DIR" && zip -q -r "../gig-line-desktop-hq-${VERSION}.zip" .)
|
||||||
|
|||||||
@@ -106,6 +106,10 @@ for f in "${all_artifacts[@]}"; do
|
|||||||
done
|
done
|
||||||
echo "==> Checksums written to $checksum_file"
|
echo "==> Checksums written to $checksum_file"
|
||||||
cat "$checksum_file"
|
cat "$checksum_file"
|
||||||
|
if [[ "${PUBLISH_DRY_RUN:-0}" == "1" ]]; then
|
||||||
|
echo "DRY RUN: preflight and checksums passed; no release or upload was created."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
API="$HOST/api/v1/repos/$REPO/releases"
|
API="$HOST/api/v1/repos/$REPO/releases"
|
||||||
created_release=0
|
created_release=0
|
||||||
|
|||||||
Reference in new issue
Block a user