Fix release publishing and add a CI token fallback
Tag builds since v0.2.2 built all artifacts but never published a release:
- tools/publish_release.sh only assembled AUTH in the GITEA_TOKEN branch; the
~/.git-credentials branch set CRED and then used an unbound ${AUTH[@]} under
`set -u`, so every API call failed and the job ended "could not create or find
release". It now sets AUTH=(-u "$CRED").
- The repo has no GITEA_TOKEN secret and the runner has no git credentials, so the
workflow now falls back to the built-in workflow token:
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN || github.token }}.
v0.2.9 was then built and published locally with all five artifacts (portable
Linux/Windows/macOS, NSIS installer, AppImage) and the release page verified via
the API. v0.2.4-v0.2.8 remain unpublished; they are superseded by the latest.
Docs
- docs/RELEASING.md records the incident and the local-publish fallback.
- TODO gains a release-pipeline follow-up (verify CI on the next tag).
- MEMORY notes the root cause, the missing secret, and which releases exist.
- Version 0.2.10.
This commit is contained in:
1 parent
3f4ac7e9aa
commit
6684d36739
16 files changed
+110
-85
No files matched your search
+25
-25
@@ -89,7 +89,7 @@ var _rig: Node3D = null
|
||||
var _head: Node3D = null
|
||||
var _bob_phase := 0.0
|
||||
var _guard_ref: Node3D = null
|
||||
var _ring: MeshInstance3D = null
|
||||
var _focus_circle: MeshInstance3D = null
|
||||
var _name_tag: Label3D = null
|
||||
## Theater props and limbs for the idle poses (ADR-0010 rig).
|
||||
var _photo_prop: MeshInstance3D = null
|
||||
@@ -136,26 +136,29 @@ func _build_body(npc_type: int) -> void:
|
||||
_rig.add_child(_head)
|
||||
_add_box_prop(_rig, Vector3(0.16, 0.08, 0.28), Vector3(-0.16, 0.05, 0.02), Color(0.12, 0.12, 0.14))
|
||||
_add_box_prop(_rig, Vector3(0.16, 0.08, 0.28), Vector3(0.16, 0.05, 0.02), Color(0.12, 0.12, 0.14))
|
||||
_build_focus_ring()
|
||||
_build_focus_circle()
|
||||
_add_props(npc_type)
|
||||
|
||||
func _build_focus_ring() -> void:
|
||||
_ring = MeshInstance3D.new()
|
||||
_ring.name = "FocusRing"
|
||||
var torus := TorusMesh.new()
|
||||
torus.inner_radius = 0.26
|
||||
torus.outer_radius = 0.34
|
||||
torus.rings = 12
|
||||
torus.ring_segments = 16
|
||||
_ring.mesh = torus
|
||||
func _build_focus_circle() -> void:
|
||||
_focus_circle = MeshInstance3D.new()
|
||||
_focus_circle.name = "FocusCircle"
|
||||
# Blue, semi-transparent disc floating in front of the face (ADR-0008).
|
||||
# Billboarded so it always reads as a circle on screen.
|
||||
var disc := CylinderMesh.new()
|
||||
disc.top_radius = 0.15
|
||||
disc.bottom_radius = 0.15
|
||||
disc.height = 0.001
|
||||
disc.radial_segments = 24
|
||||
_focus_circle.mesh = disc
|
||||
var mat := StandardMaterial3D.new()
|
||||
mat.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED
|
||||
mat.albedo_color = Color(0.95, 0.82, 0.28, 0.9)
|
||||
mat.albedo_color = Color(0.25, 0.55, 1.0, 0.45)
|
||||
mat.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA
|
||||
_ring.material_override = mat
|
||||
_ring.position = Vector3(0, 0.28, 0)
|
||||
_ring.visible = false
|
||||
_head.add_child(_ring)
|
||||
mat.billboard_mode = BaseMaterial3D.BILLBOARD_ENABLED
|
||||
_focus_circle.material_override = mat
|
||||
_focus_circle.position = Vector3(0, 0, 0.30)
|
||||
_focus_circle.visible = false
|
||||
_head.add_child(_focus_circle)
|
||||
_name_tag = Label3D.new()
|
||||
_name_tag.name = "NameTag"
|
||||
_name_tag.text = npc.profile.display_name if npc and npc.profile else ""
|
||||
@@ -168,12 +171,12 @@ func _build_focus_ring() -> void:
|
||||
_head.add_child(_name_tag)
|
||||
|
||||
func set_focus_visual(focused: bool, menu_open: bool = false) -> void:
|
||||
if _ring:
|
||||
_ring.visible = focused
|
||||
var mat := _ring.material_override as StandardMaterial3D
|
||||
if _focus_circle:
|
||||
_focus_circle.visible = focused
|
||||
var mat := _focus_circle.material_override as StandardMaterial3D
|
||||
if mat:
|
||||
mat.albedo_color = Color(1.0, 0.92, 0.35, 1.0) if menu_open else Color(0.95, 0.82, 0.28, 0.85)
|
||||
_ring.scale = Vector3.ONE * (1.15 if menu_open else 1.0)
|
||||
mat.albedo_color = Color(0.35, 0.65, 1.0, 0.7) if menu_open else Color(0.25, 0.55, 1.0, 0.45)
|
||||
_focus_circle.scale = Vector3.ONE * (1.15 if menu_open else 1.0)
|
||||
if _name_tag:
|
||||
_name_tag.visible = focused
|
||||
|
||||
@@ -394,10 +397,7 @@ func _animate(delta: float) -> void:
|
||||
_bob_phase = 0.0
|
||||
_rig.position.y = lerpf(_rig.position.y, 0.0, 0.2)
|
||||
_rig.rotation.x = lerpf(_rig.rotation.x, 0.0, 0.2)
|
||||
if _ring and _ring.visible:
|
||||
var cam := get_viewport().get_camera_3d() if get_viewport() else null
|
||||
if cam:
|
||||
_ring.look_at(cam.global_position, Vector3.UP)
|
||||
# The focus circle billboards via its material; no per-frame look_at needed.
|
||||
# Attention cue: head turns toward the guard when awareness was raised.
|
||||
if _head != null and npc.guard_noticed:
|
||||
if _guard_ref == null or not is_instance_valid(_guard_ref):
|
||||
|
||||
Reference in new issue
Block a user