Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
db4b96b
Add coolscan-roll optional dependency group
rohanpandula Jul 19, 2026
6937173
Add coolscanpy roll-scanning backend adapter
rohanpandula Jul 19, 2026
fbb8f2a
Add roll-scanning service and output writer
rohanpandula Jul 19, 2026
1d5d753
Document coolscanpy roll-scanning integration
rohanpandula Jul 19, 2026
da94eff
Move roll scanning into its own infrastructure/services package
rohanpandula Jul 19, 2026
dbc6013
Add RollWorker: background worker for coolscanpy roll scanning
rohanpandula Jul 19, 2026
d7dfbaf
Add CoolscanRollSidebar: device select, contact sheet, batch scan
rohanpandula Jul 19, 2026
5fbb9d9
Wire RollWorker and CoolscanRollSidebar into the app
rohanpandula Jul 19, 2026
9bfcc09
Add a regression test for the roll-scan->import seam
rohanpandula Jul 19, 2026
356bb80
Update roll-scanning docs for the new structure and the desktop panel
rohanpandula Jul 19, 2026
a4a3ccd
Tighten CoolscanRollSidebar's typing and guard a None item access
rohanpandula Jul 19, 2026
713cc53
Correct an overstated comparison in RollWorker.safe_stop()'s docstring
rohanpandula Jul 19, 2026
c5a8638
Add the Tier-2 repair engine seam
rohanpandula Jul 19, 2026
5fecdc8
Add Tier-3 positive rendering via NegPy's own pipeline
rohanpandula Jul 19, 2026
694d696
Extend RollScanSettings with the three output-tier flags
rohanpandula Jul 19, 2026
e8924b6
Write captured frames across three independently-selectable tiers
rohanpandula Jul 19, 2026
da91f79
Thread the output-tier settings through RollWorker
rohanpandula Jul 19, 2026
5ade086
Add output-tier controls to CoolscanRollSidebar
rohanpandula Jul 19, 2026
cfb1ec5
Skip unwritten Tier-1 outputs when feeding roll scans to discovery
rohanpandula Jul 19, 2026
c143c2f
Document the three output tiers and their archival reasoning
rohanpandula Jul 19, 2026
06cf0ac
Merge remote-tracking branch 'origin/main' into feat/coolscanpy-roll-…
rohanpandula Jul 21, 2026
19448bd
Wire digital-fauxice into the roll repair seam with 285 dpi meter pre…
rohanpandula Jul 21, 2026
ad856f2
Merge remote-tracking branch 'origin/main' into feat/coolscanpy-roll-…
rohanpandula Jul 21, 2026
997aa3a
feat(ls5000): ship Nikon-exact native Mac roll workflow
rohanpandula Jul 22, 2026
5b4eba8
feat(ls5000): bind retained live capture evidence
rohanpandula Jul 23, 2026
46e6343
fix(ls5000): derive review slots from fresh preview
rohanpandula Jul 23, 2026
bcf254c
fix(roll): pin fixed short-strip frame table
rohanpandula Jul 23, 2026
d6c660e
fix(roll): ignore terminal preview slivers
rohanpandula Jul 23, 2026
2e20d2a
fix(repair): pin hybrid synthesis budget
rohanpandula Jul 23, 2026
87b645b
feat(roll): guide bounded hybrid repair
rohanpandula Jul 23, 2026
c38991d
fix(roll): tolerate Finder metadata in sealed runs
rohanpandula Jul 23, 2026
c3f4aec
style(roll): condense offset proof note
rohanpandula Jul 23, 2026
9c6c80d
style(roll): format integrated scanner workflow
rohanpandula Jul 23, 2026
5361753
build(repair): pin Digital FauxIce 0.3.1
rohanpandula Jul 23, 2026
1f773e9
feat(scanner): add safe full-roll eject control
rohanpandula Jul 23, 2026
b131367
fix(scanner): resume batch after short startup table
rohanpandula Jul 23, 2026
5eeb655
feat(scanner): center whole-roll preview
rohanpandula Jul 23, 2026
d5324ad
chore(scanner): pin preview settle fix
rohanpandula Jul 23, 2026
2ab8108
chore(scanner): pin Nikon preview timing fix
rohanpandula Jul 23, 2026
055b742
chore(scanner): pin startup-table diagnostic
rohanpandula Jul 23, 2026
02ef491
chore(scanner): pin dynamic full-roll preview
rohanpandula Jul 23, 2026
a05b71f
chore(scanner): pin full-roll mapping fix
rohanpandula Jul 23, 2026
49d58c2
fix(scanner): accept proven full-roll density geometry
rohanpandula Jul 23, 2026
53fee1d
fix(scanner): retain proven frame approvals
rohanpandula Jul 23, 2026
14375ff
fix(scanner): accept live startup tables
rohanpandula Jul 23, 2026
62b24e1
fix(scanner): pin reviewed leading-anchor capture
rohanpandula Jul 23, 2026
a276383
fix(repair): allow verified Hybrid context pixels
rohanpandula Jul 23, 2026
c918696
fix(ui): auto-tone roll preview exposure
rohanpandula Jul 23, 2026
9321394
fix(scanner): accept dated roll output names
rohanpandula Jul 23, 2026
49cd69a
fix(scanner): clarify uncertain eject timeout
rohanpandula Jul 23, 2026
8ab36d8
Merge upstream main into whole-roll integration
rohanpandula Jul 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,12 @@ jobs:
sudo apt-get install -y libegl1 libxkbcommon-x11-0 libdbus-1-3 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-xfixes0 x11-utils libgl1

- name: Install Dependencies
run: uv sync --group dev
run: >-
uv sync --locked
--group dev
--group coolscan-roll
--group fauxice
--group fauxice-hybrid

- name: Run Linting (Ruff)
run: uv run ruff check .
Expand Down
9 changes: 9 additions & 0 deletions NOTICE.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,12 @@ concepts (continuous defect score, score-weighted multiscale reconstruction,
original-floor writer rule, interior-radius routing with feathered compositing)
from digital-fauxice, Copyright (c) 2026 Rohan Pandula, MIT License.
https://github.com/rohanpandula/digital-fauxice

The binary tables and portable-oracle validation receipt under
negpy/assets/portable_cms, the fixed output table under
negpy/assets/portable_builder, and the 492-byte output ICC profile embedded in
negpy/services/roll/nikon_icc.py are vendor-derived interoperability data
recovered from the pinned Nikon LS-5000 color path. They are data, not a
redistribution of CML4.dll, LS5000.md3, Nikon Scan, or Wine. Nikon and COOLSCAN
are trademarks of Nikon Corporation; this project is not affiliated with or
endorsed by Nikon.
Loading
Loading