Files: prototype and documentation files on features, with versions. Adding, replacing or removing a file is a feature revision with a change note. Types come from the extension; uploads are capped at 25 MB and stored under opaque paths. Every file URL checks project access, then redirects to a short-lived signed URL on the bucket, or streams with nosniff and a CSP sandbox when no bucket is configured. HTML prototypes run in a sandboxed iframe without same-origin access. Threads: whole-file threads and pins at a point on an image, drawn as an SVG overlay in percentages. Pins are placed with number fields, or by clicking the image with JS. Implementations: name, link and status, plus a per-feature status grid stamped with the feature revision, marked behind when the feature changes, and confirmable without changing the status. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
12 lines
441 B
HTML
12 lines
441 B
HTML
{% extends "projects/base.html" %}
|
|
|
|
{% block page_title %}{% if impl %}Edit {{ impl.name }}{% else %}New implementation{% endif %}{% endblock %}
|
|
|
|
{% block project_content %}
|
|
<h1>{% if impl %}Edit {{ impl.name }}{% else %}New implementation{% endif %}</h1>
|
|
<form method="post">
|
|
{% csrf_token %}
|
|
{{ form }}
|
|
<p><button type="submit">{% if impl %}Save{% else %}Add implementation{% endif %}</button></p>
|
|
</form>
|
|
{% endblock %}
|