Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
190b049
Phase 2A-1: Port ItemTag schema update from paid iOS
dadachi Apr 24, 2026
ae1a13a
Merge pull request #42 from nativeapptemplate/substrate-v2--phase2a-1…
dadachi Apr 24, 2026
741978c
Phase 2A-2: Remove NFC / QR / Scan
dadachi Apr 24, 2026
cf8b706
remove NativeAppTemplate.xcsheme
dadachi Apr 24, 2026
04cf683
Restore item-tag swipe actions on ShopDetailView; rename reset → idle
dadachi Apr 24, 2026
d692de1
Merge pull request #43 from nativeapptemplate/substrate-v2--nfc-qr-sc…
dadachi Apr 25, 2026
a875d76
Silence success toasts on item-tag complete/idle in ShopDetailView
dadachi Apr 25, 2026
0ac0bd8
Merge pull request #44 from nativeapptemplate/substrate-v2--silence-t…
dadachi Apr 25, 2026
8d8102a
Phase 2A-3: Generic CRUD UI for ItemTag
dadachi Apr 25, 2026
5759574
Bump TestSessionController.maximumNameLength default 4 → 100
dadachi Apr 25, 2026
e16ed35
remove scan folder
dadachi Apr 25, 2026
449ba6d
Merge pull request #45 from nativeapptemplate/substrate-v2--phase2a-3…
dadachi Apr 25, 2026
4b2340b
Display completedAt as yyyy/MM/dd HH:mm regardless of locale
dadachi Apr 26, 2026
eba67ad
Merge pull request #46 from nativeapptemplate/substrate-v2--card-date…
dadachi Apr 26, 2026
371f5c0
Remove "How To Use" link from Support section in SettingsView
dadachi Apr 27, 2026
6eb2c4b
Remove NativeAppTemplate.entitlements
dadachi Apr 27, 2026
d9fe960
Merge pull request #48 from nativeapptemplate/substrate-v2--miscellan…
dadachi Apr 27, 2026
ca67d6c
Drop maximum_name_length from permissions; move to Constants
dadachi Apr 27, 2026
8d7d2f6
Merge pull request #49 from nativeapptemplate/substrate-v2--drop-maxi…
dadachi Apr 27, 2026
64f8b0c
Add client-side length caps + truncation for Shop name/description
dadachi Apr 27, 2026
d6039a0
Merge pull request #50 from nativeapptemplate/substrate-v2--shop-name…
dadachi Apr 27, 2026
64068b4
Drop unused tags-scanned count and howToUse; tighten ItemTag labels
dadachi Apr 28, 2026
35ab5f0
Merge pull request #51 from nativeapptemplate/substrate-v2--drop-tags…
dadachi Apr 28, 2026
5a4a3c1
Wrap String constants in enum Strings namespace
dadachi Apr 28, 2026
3e034f1
Merge pull request #52 from nativeapptemplate/substrate-v2--wrap-stri…
dadachi Apr 28, 2026
07826e6
Replace onboarding image assets with new set; add hero asset
dadachi Apr 29, 2026
620cb5f
Slim onboarding to 4 slides; ImageOrientation enum; hero asset
dadachi Apr 29, 2026
0260ff7
Merge pull request #53 from nativeapptemplate/substrate-v2--fix-onboa…
dadachi Apr 29, 2026
ee9140b
Drop onboarding reload ceremony
dadachi Apr 29, 2026
54955d9
Merge pull request #54 from nativeapptemplate/substrate-v2--drop-onbo…
dadachi Apr 29, 2026
4e4ab6d
Add unit tests for untested Models and Date extension
dadachi Apr 29, 2026
c635fc7
Merge pull request #55 from nativeapptemplate/substrate-v2--add-tests
dadachi Apr 29, 2026
1bd4977
Ignore .claude/scheduled_tasks.lock
dadachi Apr 29, 2026
f056702
Remove vestigial code from NFC/Scan removal
dadachi Apr 29, 2026
a9594a0
Merge pull request #56 from nativeapptemplate/substrate-v2--refactor
dadachi Apr 29, 2026
1e2e89e
README: drop stale NFC/QR feature lines
dadachi Apr 29, 2026
db22666
Merge pull request #57 from nativeapptemplate/substrate-v2--bugfixes
dadachi Apr 29, 2026
11fa6d5
Remove dead code: ImageSaver, composited(), unused colors and fonts
dadachi Apr 30, 2026
f2a02ac
Merge pull request #58 from nativeapptemplate/substrate-v2--dead-code
dadachi Apr 30, 2026
8e1638b
Cleanup: dead Date helper, swiftier String predicates, README env vars
dadachi Apr 30, 2026
c2bbf36
Remove Beta build configuration
dadachi Apr 30, 2026
a542d27
Remove unused String helpers: image(withAttributes:size:), isAlphanum…
dadachi Apr 30, 2026
b2841d1
Merge pull request #59 from nativeapptemplate/substrate-v2--cleanup-s…
dadachi Apr 30, 2026
a7d2590
add docs-private to gitignore
dadachi May 1, 2026
78f61b4
phase2-prestep-number-tag-rename.md removed
dadachi May 1, 2026
4232076
Normalize substrate naming: drop NATI-/NATEMPLATE_API_ abbreviations
dadachi May 1, 2026
c4c5af0
Merge pull request #60 from nativeapptemplate/substrate-v2--naming-no…
dadachi May 1, 2026
b1dc07c
Add CHANGELOG entry for substrate naming normalization
dadachi May 2, 2026
3f2532e
Update CHANGELOG for 3.2.0 release
dadachi May 2, 2026
335bd56
Bump version to 3.2.0 (build 10)
dadachi May 2, 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
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -89,3 +89,7 @@ secrets.*.xcconfig
.claude/logs/
.claude/tmp/
.claude/*.log
.claude/scheduled_tasks.lock

# Private docs
docs-private/
31 changes: 30 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [3.2.0] - 2026-05-02

### Removed
- NFC, QR code, and Scan functionality (Phase 2A-2)
- `tagsScanned` count and `howToUse` fields from ItemTag
- `maximum_name_length` from server permissions; moved to client `Constants`
- Onboarding reload ceremony
- Dead code: `ImageSaver`, `composited()`, unused colors and fonts, dead `Date` helper

### Changed
- Renamed "Number Tag" to "Item Tag" across labels and identifiers
- Ported ItemTag schema and generic CRUD UI from paid iOS (Phase 2A-1, 2A-3)
- Display `completedAt` as `yyyy/MM/dd HH:mm` regardless of locale
- Added client-side length caps and truncation for Shop name/description
- Wrapped String constants in `enum Strings` namespace
- Slimmed onboarding to 4 slides; introduced `ImageOrientation` enum
- Tightened ItemTag labels and silenced success toasts on complete/idle
- Read API endpoint from env vars in Debug builds
- Renamed error code prefix `NATI-` to `NATIVEAPPTEMPLATE-` and env var prefix `NATEMPLATE_API_` to `NATIVEAPPTEMPLATE_API_`
- Swiftier String predicates; replaced custom helpers with stdlib equivalents

### Added
- Unit tests for previously untested Models and `Date` extension
- `CONTRIBUTING.md` and `CODE_OF_CONDUCT.md`

### Fixed
- Onboarding flow and asset cleanup
- README: dropped stale NFC/QR feature lines and updated env var references

## [3.1.1] - 2026-04-06

### Changed
Expand All @@ -17,7 +46,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Added
- Pagination support for item tags list
- CodedError system with `NATI-XXXX` prefixed error codes
- CodedError system with `NATIVEAPPTEMPLATE-XXXX` prefixed error codes
- App version display in settings
- Design system constants (spacing, animation, glass, layout, corner radius)
- GlassButtonStyle and GlassCard components with glassmorphism styling
Expand Down
9 changes: 4 additions & 5 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,18 +107,17 @@ NativeAppTemplate/
```

### Error Handling (CodedError System)
All errors use the `CodedError` protocol in `NativeAppTemplate/Common/Errors/`. Error codes use the `NATI-XXXX` prefix (NativeAppTemplate iOS) to distinguish from Android (`NATA-XXXX`).
All errors use the `CodedError` protocol in `NativeAppTemplate/Common/Errors/`. Error codes share the `NATIVEAPPTEMPLATE-XXXX` prefix across iOS and Android.

| Range | Type | File |
|-------|------|------|
| NATI-1xxx | App/general errors | `AppError.swift` |
| NATI-2xxx | API/network errors | `NativeAppTemplateAPIError.swift` |
| NATI-3xxx | NFC/scan errors | `NFCError.swift` |
| NATIVEAPPTEMPLATE-1xxx | App/general errors | `AppError.swift` |
| NATIVEAPPTEMPLATE-2xxx | API/network errors | `NativeAppTemplateAPIError.swift` |

- New error types must conform to `CodedError` and be placed in `Common/Errors/`
- Use `error.codedDescription` (not `error.localizedDescription`) in all error messages
- Use `Message(error: error)` convenience to post errors to `MessageBus`
- Error code numbers must match across iOS and Android (only the prefix differs)
- Error code numbers must match across iOS and Android

### Dependencies (Swift Package Manager)
- KeychainAccess (4.2.2) - Secure credential storage
Expand Down
218 changes: 6 additions & 212 deletions NativeAppTemplate.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

This file was deleted.

4 changes: 0 additions & 4 deletions NativeAppTemplate/App.swift
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,9 @@ private final class NullSessionController: SessionControllerProtocol {
}

var shouldPopToRootView: Bool = false
var didBackgroundTagReading: Bool = false
var completeScanResult = CompleteScanResult()
var showTagInfoScanResult = ShowTagInfoScanResult()
var shouldUpdateApp: Bool = false
var shouldUpdatePrivacy: Bool = false
var shouldUpdateTerms: Bool = false
var maximumQueueNumberLength: Int = 0
var shopLimitCount: Int = 0
var shopkeeper: Shopkeeper?
var hasPermissions: Bool {
Expand Down
17 changes: 0 additions & 17 deletions NativeAppTemplate/AppSingletons.swift

This file was deleted.

2 changes: 1 addition & 1 deletion NativeAppTemplate/Common/Errors/AppError.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ enum AppError: CodedError {
var errorCode: String {
switch self {
case .unexpected:
"NATI-1001"
"NATIVEAPPTEMPLATE-1001"
}
}

Expand Down
5 changes: 2 additions & 3 deletions NativeAppTemplate/Common/Errors/CodedError.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@
// NativeAppTemplate
//

// Error codes use the `NATI-XXXX` prefix (NativeAppTemplate iOS).
// Android uses `NATA-XXXX`.
// Ranges: 1xxx App errors, 2xxx API errors, 3xxx NFC errors.
// Error codes share the `NATIVEAPPTEMPLATE-XXXX` prefix across iOS and Android.
// Ranges: 1xxx App errors, 2xxx API errors.

import Foundation

Expand Down
24 changes: 0 additions & 24 deletions NativeAppTemplate/Common/Errors/NFCError.swift

This file was deleted.

10 changes: 5 additions & 5 deletions NativeAppTemplate/Common/Errors/NativeAppTemplateAPIError.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@ enum NativeAppTemplateAPIError: CodedError {
nonisolated var errorCode: String {
switch self {
case .requestFailed:
"NATI-2001"
"NATIVEAPPTEMPLATE-2001"
case .processingError:
"NATI-2002"
"NATIVEAPPTEMPLATE-2002"
case .responseMissingRequiredMeta:
"NATI-2003"
"NATIVEAPPTEMPLATE-2003"
case .responseHasIncorrectNumberOfElements:
"NATI-2004"
"NATIVEAPPTEMPLATE-2004"
case .noData:
"NATI-2005"
"NATIVEAPPTEMPLATE-2005"
}
}

Expand Down
Loading
Loading