feat(sims): rename film simulations and bundled recipes

Sims: PROVIA->PROVIPES, VELVIA->VELVIPES, CLASSIC CHROME->CLASSIC CHRIPES, CLASSIC NEG->CLASSIC NEGIPES, ASTIA->ASTIPES, ETERNA->ETERNIPES, ACROS->ACRIPES, LEICA->LEITZ STREETLIFE.

Bundled recipes follow: PROVIPES STD, VELVIPES VIVID, ACRIPES MONO, CLASSIC NEGIPES. Ids and baseFilters untouched, so saved sessions keep resolving.
This commit is contained in:
2026-09-11 08:44:58 +07:00
parent 7454ea1218
commit 6adf0b5933
4 changed files with 17 additions and 17 deletions
+2 -2
View File
@@ -191,7 +191,7 @@ export default function App() {
const [settingsVisible, setSettingsVisible] = useState(false);
// Shutter click: only OFF/ON (no volume API on Android). Applied at capture.
const [shutterSound, setShutterSound] = useState<ShutterSound>('on');
// Startup behavior: 'default' = PROVIA neutral at 4:3 camera; 'last' = restore
// Startup behavior: 'default' = PROVIPES neutral at 4:3 camera; 'last' = restore
// previous session from AsyncStorage. Default is 'default'.
const [startupMode, setStartupMode] = useState<StartupMode>('default');
const photoSeq = useRef(0);
@@ -329,7 +329,7 @@ export default function App() {
}
settingsHydratedRef.current = true;
// Startup mode: 'default' opens camera + PROVIA film sim (neutral
// Startup mode: 'default' opens camera + PROVIPES film sim (neutral
// adjustments, DEFAULT_ADJUSTMENTS) at 4:3. 'last' restores the previous
// session from AsyncStorage; with no saved session it falls back to the
// same clean default state.
+2 -2
View File
@@ -24,7 +24,7 @@ const haptic = () => Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light);
interface RecipeCreateModalProps {
visible: boolean;
// Id of the currently applied film sim (or bundled recipe whose look should
// prefill the SIMULATION row); undefined → default to PROVIA.
// prefill the SIMULATION row); undefined → default to PROVIPES.
currentBase?: BaseFilter;
// When set the form opens as an EDITOR: every row (name included) is
// prefilled from this recipe instead of the sim's standard values, and
@@ -149,7 +149,7 @@ export default function RecipeCreateModal({
onSave,
}: RecipeCreateModalProps) {
const insets = useSafeAreaInsets();
// Seed from the current film sim (or PROVIA) so "other params" start at the
// Seed from the current film sim (or PROVIPES) so "other params" start at the
// sim's standard values and the user only types what they want to change.
const seedBase: BaseFilter =
currentBase && FILM_SIMS.some((s) => s.baseFilter === currentBase) ? currentBase : 'provia';
+1 -1
View File
@@ -132,7 +132,7 @@ export default function SettingsModal({
/>
<View className="flex-row items-center mt-1.5 ml-1">
<Text className="text-zinc-600 font-mono text-[10px] ml-1.5">
DEFAULT: camera + PROVIA (neutral adjustments) at 4:3. LAST SESSION: restore your previous look on startup.
DEFAULT: camera + PROVIPES (neutral adjustments) at 4:3. LAST SESSION: restore your previous look on startup.
</Text>
</View>
</View>
+12 -12
View File
@@ -37,18 +37,18 @@ export interface FilmSim {
}
export const FILM_SIMS: FilmSim[] = [
{ id: 'sim-provia', name: 'PROVIA', baseFilter: 'provia', adjustments: { ...DEFAULT_ADJUSTMENTS } },
{ id: 'sim-velvia', name: 'VELVIA', baseFilter: 'velvia', adjustments: { ...DEFAULT_ADJUSTMENTS } },
{ id: 'sim-classic-chrome', name: 'CLASSIC CHROME', baseFilter: 'classic-chrome', adjustments: { ...DEFAULT_ADJUSTMENTS } },
{ id: 'sim-classic-neg', name: 'CLASSIC NEG', baseFilter: 'classic-neg', adjustments: { ...DEFAULT_ADJUSTMENTS } },
{ id: 'sim-astia', name: 'ASTIA', baseFilter: 'astia', adjustments: { ...DEFAULT_ADJUSTMENTS } },
{ id: 'sim-eterna', name: 'ETERNA', baseFilter: 'eterna', adjustments: { ...DEFAULT_ADJUSTMENTS } },
{ id: 'sim-acros', name: 'ACROS', baseFilter: 'monochrome', adjustments: { ...DEFAULT_ADJUSTMENTS } },
{ id: 'sim-provia', name: 'PROVIPES', baseFilter: 'provia', adjustments: { ...DEFAULT_ADJUSTMENTS } },
{ id: 'sim-velvia', name: 'VELVIPES', baseFilter: 'velvia', adjustments: { ...DEFAULT_ADJUSTMENTS } },
{ id: 'sim-classic-chrome', name: 'CLASSIC CHRIPES', baseFilter: 'classic-chrome', adjustments: { ...DEFAULT_ADJUSTMENTS } },
{ id: 'sim-classic-neg', name: 'CLASSIC NEGIPES', baseFilter: 'classic-neg', adjustments: { ...DEFAULT_ADJUSTMENTS } },
{ id: 'sim-astia', name: 'ASTIPES', baseFilter: 'astia', adjustments: { ...DEFAULT_ADJUSTMENTS } },
{ id: 'sim-eterna', name: 'ETERNIPES', baseFilter: 'eterna', adjustments: { ...DEFAULT_ADJUSTMENTS } },
{ id: 'sim-acros', name: 'ACRIPES', baseFilter: 'monochrome', adjustments: { ...DEFAULT_ADJUSTMENTS } },
// Leica digital look (M/Q/SL) is NOT a film stock: neutral-but-warm colour
// with restrained saturation, deep open shadows and gentle highlight rolloff.
// Matrix-only here (like every sim) — the tonal half lives in the leica
// matrix (mild contrast + warm neutrality); users stack DR/tone on top.
{ id: 'sim-leica', name: 'LEICA', baseFilter: 'leica', adjustments: { ...DEFAULT_ADJUSTMENTS } },
{ id: 'sim-leica', name: 'LEITZ STREETLIFE', baseFilter: 'leica', adjustments: { ...DEFAULT_ADJUSTMENTS } },
];
// Film sim → full Recipe (never persisted; sims are applied on the fly).
@@ -66,7 +66,7 @@ export function filmSimToRecipe(sim: FilmSim): Recipe {
export const DEFAULT_RECIPES: Recipe[] = [
{
id: 'classic-neg-default',
name: 'CLASSIC NEG.',
name: 'CLASSIC NEGIPES.',
baseFilter: 'classic-neg',
adjustments: {
exposure: 2,
@@ -90,7 +90,7 @@ export const DEFAULT_RECIPES: Recipe[] = [
},
{
id: 'velvia-default',
name: 'VELVIA VIVID',
name: 'VELVIPES VIVID',
baseFilter: 'velvia',
adjustments: {
exposure: 0,
@@ -114,7 +114,7 @@ export const DEFAULT_RECIPES: Recipe[] = [
},
{
id: 'provia-default',
name: 'PROVIA STD',
name: 'PROVIPES STD',
baseFilter: 'provia',
adjustments: {
exposure: 1,
@@ -138,7 +138,7 @@ export const DEFAULT_RECIPES: Recipe[] = [
},
{
id: 'acros-default',
name: 'ACROS MONO',
name: 'ACRIPES MONO',
baseFilter: 'monochrome',
adjustments: {
exposure: 0,