Releases: iamjohnnymac/netbox-osp
Release list
v0.3.8 - Dedupe trace button
Removed pre-v0.3.1 inline {% include %} of 'Trace this core' from strand.html — the StrandTraceButton PluginTemplateExtension covers it now that v0.3.7 wired the plugin slots. Fixed a multi-line Django {# #} comment that broke CI on first attempt (use {% comment %}{% endcomment %} for multi-line).
v0.3.7 - Audit polish bundle
Three audit findings bundled:
- Brown strand colour badge now renders saddle brown (#8b4513)
- strand.html Colour badge now uses get_color_color helper (matches list view)
- strand.html + trunkbreakout.html now render plugin template-extension slots (Attachments / Documents etc.)
CSS + template-only. No model/migration changes.
v0.3.5 - TIA-598 strand badges actually render in colour
Two-line model fix completing the v0.3.4 attempt. Strand/Tube now render colour badges in their actual colour (Blue blue, Orange orange, Brown brown, etc.) — previously every value rendered as text-bg-secondary grey because the helper method NetBox's ChoiceFieldColumn expects was missing.
v0.3.4 - Polish: legible strand colours + readable tracer
Polish-pass hotfix from project audit. Two CSS-only fixes:
- TIA-598 strand colour badges (Blue / Black / White) now legible on dark theme
- Core tracer hop nodes get more breathing room (min-width 160px, font-size 13px)
v0.3.3 - Readable loss-budget gauge
UX hotfix: FibreLink loss-budget gauge now legible on dark theme. Numbers + percent badge live above a clean visual bar (text was previously invisible inside the SVG).
v0.3.2 - Hotfix: polarity selector + detail-page maps
Second hotfix after v0.3.0. Two bugs found during live-verify.
Fixed
- MTP harness deploy form now exposes the
polarityselector. v0.3.0 addedpolaritytoMtpHarnessFormbutmtp_harness_deploy.htmlrenders each field explicitly with{% render_field form.X %}rather than iterating the form. One-line template fix. - Per-object detail-page maps now use the shared base-layer manager (online + offline fallback). The detail-page maps previously only fetched from the local MBTiles proxy with no online fallback. The bundled basemap covers a Wheatstone bbox; any other geography rendered as a blank dark canvas with just the marker pin.
spliceclosure.htmlandospcable.htmlnow hookOspBaseLayers.attach(map, null, tileUrl)— same multi-layer behaviour as the main/plugins/osp/map/, no dropdown on the small detail maps. Pre-existing bug; not a v0.3.x regression.
pip install -U netbox-ospv0.3.1 - Hotfix: plugin extension slots in custom templates
Hotfix discovered during v0.3.0 live-verify.
Fixed
- `PluginTemplateExtension` hooks now render on custom detail templates. v0.3.0 shipped the new `SpliceClosureQrCode` / `SpliceTrayQrCode` extensions and enabled `netbox-attachments` to target our models — but the Field QR code panel and the Attachments card never appeared. Root cause: `spliceclosure.html`, `splicetray.html`, `fibretrunk.html`, `ospcable.html`, and `fibrelink.html` all override the `content` block of `generic/object.html` wholesale, swallowing the slot where NetBox renders plugin extensions. Each affected template now loads `{% load plugins %}` and explicitly renders `plugin_right_page`, `plugin_left_page`, and `plugin_full_width_page` in the appropriate positions.
v0.3.0 users on `[qrcode]` / `[attachments]`: upgrade to v0.3.1 to see the panels.
```bash
pip install -U netbox-osp
```
v0.3.0 — Ecosystem sprint
Three-PR ecosystem sprint per the v0.3 moat plan §v0.3.0 quick wins. Two integrations + one operations feature; no breaking changes. Migration 0005_fibretrunk_polarity is additive and non-destructive.
Install / upgrade
pip install -U netbox-osp # base install
pip install -U netbox-osp[attachments] # + netbox-attachments
pip install -U netbox-osp[qrcode] # + qrcode lib for SpliceClosure/Tray QR codes
pip install -U netbox-osp[ecosystem] # both extrasAdded
-
MPO polarity tracking on
FibreTrunk(#18) — addsMpoPolarityChoices(Type A / B / C / D per TIA-568.3-D) and a newpolarityCharFieldonFibreTrunk. Surfaced on the detail page (badge next toType), table column, filter UI, REST API, REST bulk-import + bulk-edit, GraphQL filter, and the MTP harness one-click deploy wizard. Blank is permitted for non-MPO trunk types (Ribbon / Loose-tube) and unknown-polarity legacy data. Addresses NetBox core issue #5798 and the VIAVI "40 % of hyperscale downtime is fibre alignment / connector issues" stat. Migration0005_fibretrunk_polarityis additive and non-destructive (empty-string default for existing rows). -
Field QR codes on
SpliceClosureandSpliceTray(#17) — two newPluginTemplateExtensionclasses (SpliceClosureQrCode,SpliceTrayQrCode) inject a Field QR code panel into the right-page area of closure / tray detail pages. The QR encodes the absolute URL of the page so a field tech can scan a printed closure label and land on the splice plan with attached photos. Uses theqrcodePython library's pure-Python SVG factory (no Pillow dependency). Install withpip install netbox-osp[qrcode]. The panel quietly hides on installs without the extra so the base install isn't affected. NoPLUGINS_CONFIGchanges required. -
netbox-attachments integration (#16) — documented
scope_filterconfiguration for netbox-attachments covering all 10 OSP models (OspCable,Tube,Strand,Splice,SpliceClosure,SpliceTray,FibreLink,FibreTrunk,TrunkBreakout,LocationGeo). Operators can attach OTDR.sortraces, splice photos, as-built PDFs, and acceptance-test certificates to any OSP record. Install withpip install netbox-osp[attachments]. Zero plugin code — pure composition via the upstreamscope_filtersetting. Sets up the file-storage layer that the upcoming v0.3.5 OTDR moat work will read.sorfiles from.
See docs/integrations.md for full install + verification steps and the rationale on why the QR feature uses qrcode directly rather than wrapping netbox-qrcode.
What's next — v0.3.5 OTDR moat (3–4 weeks)
.sor upload + parse + KeyEvents table → loss-vs-distance trace overlay → geo-anchored fault location (project event distance along the cable's GeoJSON polyline and drop a red pin on the Leaflet plant map) → baseline + drift detection + ageing margin.
netbox-osp v0.2.2 — PyPI README refresh + demo walkthrough
Metadata-only patch so the PyPI project page actually shows the v0.2 features.
Fixed on PyPI
- README screenshots converted from relative
docs/screenshots/*.pngpaths to absoluteraw.githubusercontent.com/...URLs so they render inline on the PyPI project page (the v0.2.0 and v0.2.1 releases had broken image icons there).
New on the docs site
- 8-step demo walkthrough — narrative tour of the plugin running against the live demo, with 10 screenshots captured live (OSP model, splice closures, loss-budget gauge, MTP harness deploy form, visual core tracer, plant map).
- README adds a
demo walkthroughbadge linking to the page.
No code changes. pip install -U netbox-osp is metadata-only.
Links
netbox-osp v0.2.1 — d3 dependency hotfix
Visual core tracer's dagre-d3 graph stayed blank in 0.2.0 because the dagre-d3 v0.6.4 bundle declares an external d3 dependency rather than inlining it. Loss-budget band and hop legend rendered fine, but the graph itself stayed blank with "Renderer JS not loaded".
Fix
- Vendored
d3.v5.min.js(248 KB) atstatic/netbox_osp/js/d3.v5.min.js - Added the
<script>tag instrand_tracer.htmlbeforedagre-d3.min.js
No model changes, no API changes, no migrations. Pure two-line fix to the template + one new vendored static file.
Upgrade
pip install -U netbox-osp
python manage.py collectstatic --no-input